rinrin
rinrin

Reputation: 325

Put numbers from Fraction() object into a list of tuples

I have a list of:

[Fraction(1, 3), Fraction(2, 5), Fraction(5, 7), Fraction(1, 3), Fraction(1, 6), Fraction(1, 4), Fraction(1, 5), Fraction(3, 7), Fraction(2, 9), Fraction(1, 3), Fraction(2, 7), Fraction(5, 8), Fraction(1, 2), Fraction(2, 3), Fraction(2, 9), Fraction(4, 9)]

And I need to put the Fraction() numbers in a list of tuples:

[(1,3),(2,5),... and so on]

I tried this:

def frtuples(fractionList):
    listt = []
    for item in fractionList:
        num = item.numerator
        den = item.denominator
    tuplee = (num, den)
    return tuplee

But all I get is:

(4,9)

To be honest I dunno how to get rid of the Fraction()

Upvotes: 0

Views: 1118

Answers (2)

Ryuzaki L
Ryuzaki L

Reputation: 40058

The problem is you are only saving last iteration value to tuple and returning it, You need to add those tuples to list and return list

def frtuples(fractionList):
  listt = []
  for item in fractionList:
     num = item.numerator
     den = item.denominator
     tuplee = (num, den)
     listt.append(tuplee)
  return listt

Or you can use list comprehension

def frtuples(fractionList):
     return [(item.numerator,item.denominator) for item in fractionList]

Upvotes: 3

Arkistarvh Kltzuonstev
Arkistarvh Kltzuonstev

Reputation: 6920

Try this :

def frtuples(fractionList):
    listt = []
    for item in fractionList:
        num = item.numerator
        den = item.denominator
        tuplee = (num, den)
        listt.append(tuplee)
    return listt

You need to append the tuple in the list defined above the for loop and then return the list in stead of the tuple.

Output

>>> l = [Fraction(1, 3), Fraction(2, 5), Fraction(5, 7), Fraction(1, 3), Fraction(1, 6), Fraction(1, 4), Fraction(1, 5), Fraction(3, 7), Fraction(2, 9), Fraction(1, 3), Fraction(2, 7), Fraction(5, 8), Fraction(1, 2), Fraction(2, 3), Fraction(2, 9), Fraction(4, 9)]
>>> frtuples(l)
[(1, 3), (2, 5), (5, 7), (1, 3), (1, 6), (1, 4), (1, 5), (3, 7), (2, 9), (1, 3), (2, 7), (5, 8), (1, 2), (2, 3), (2, 9), (4, 9)]

Upvotes: 0

Related Questions