Reputation: 14062
I'm looking for a way to print elements from a tuple with no brackets.
Here is my tuple:
mytuple = [(1.0,),(25.34,),(2.4,),(7.4,)]
I converted this to a list to make it easier to work with
mylist = list(mytuple)
Then I did the following
for item in mylist:
print(item.strip())
But I get the following error
AttributeError: 'tuple' object has no attribute 'strip'
Which is strange because I thought I converted to a list?
What I expect to see as the final result is something like:
1.0,
25.34,
2.4,
7.4
or
1.0, ,23.43, ,2.4, ,7.4
Upvotes: 23
Views: 86261
Reputation: 1816
One can generalize to any complex structure with use of recursion:
def flatten(o):
if not isinstance(o, (list, tuple, dict)):
return str(o)
elif isinstance(o, (list, tuple)):
return "\n".join(flatten(e) for e in o)
elif isinstance(o, (dict)):
return "\n".join(e + ": " + flatten(o[e]) for e in o)
Example:
>>> flatten((1, [21, {'a': 'aaa', 'b': 'bbb'}], 3))
'1, 21, a: aaa\nb: bbb, 3'
Upvotes: 0
Reputation: 5824
mytuple = [(1.0,),(25.34,),(2.4,),(7.4,)]
for item in mytuple:
print(*item) # *==> unpacking
Upvotes: 9
Reputation: 431
I iterate through the list tuples, than I iterate through the 'items' of the tuples.
my_tuple_list = [(1.0,),(25.34,),(2.4,),(7.4,)]
for a_tuple in my_tuple_list: # iterates through each tuple
for item in a_tuple: # iterates through each tuple items
print item
result:
1.0
25.34
2.4
7.4
to get exactly the result you mentioned above you can always add
print item + ','
Upvotes: 1
Reputation: 229
You can do it like this as well:
mytuple = (1,2,3)
print str(mytuple)[1:-1]
Upvotes: 22
Reputation: 59974
mytuple
is already a list (a list of tuples), so calling list()
on it does nothing.
(1.0,)
is a tuple with one item. You can't call string functions on it (like you tried). They're for string types.
To print each item in your list of tuples, just do:
for item in mytuple:
print str(item[0]) + ','
Or:
print ', ,'.join([str(i[0]) for i in mytuple])
# 1.0, ,25.34, ,2.4, ,7.4
Upvotes: 23