Reputation: 325
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
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
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