21

我正在寻找一种从没有括号的元组中打印元素的方法。

这是我的元组:

mytuple = [(1.0,),(25.34,),(2.4,),(7.4,)]

我将其转换为列表以使其更易于使用

mylist = list(mytuple)

然后我做了以下

for item in mylist:
    print(item.strip())

但我收到以下错误

AttributeError: 'tuple' object has no attribute 'strip'

这很奇怪,因为我认为我已转换为列表?

我期望看到的最终结果类似于:

1.0,
25.34,
2.4,
7.4

或者

1.0, ,23.43, ,2.4, ,7.4 
4

5 回答 5

20

mytuple已经是一个列表(元组列表),所以调用list()它什么都不做。

(1.0,)是一个包含一个项目的元组。您不能在其上调用字符串函数(就像您尝试过的那样)。它们用于字符串类型。

要打印元组列表中的每个项目,只需执行以下操作:

for item in mytuple:
    print str(item[0]) + ','

或者:

print ', ,'.join([str(i[0]) for i in mytuple])
# 1.0, ,25.34, ,2.4, ,7.4
于 2013-10-01T09:36:11.167 回答
18

你也可以这样做:

mytuple = (1,2,3)
print str(mytuple)[1:-1]
于 2017-01-11T23:50:47.617 回答
8
mytuple = [(1.0,),(25.34,),(2.4,),(7.4,)]
for item in mytuple:
    print(*item) # *==> unpacking 
于 2017-11-22T07:38:07.710 回答
1

我遍历列表元组,而不是遍历元组的“项目”。

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

结果:

1.0
25.34
2.4
7.4

要获得您上面提到的结果,您可以随时添加

print item + ','
于 2017-01-12T00:37:03.177 回答
0

使用递归可以推广到任何复杂的结构:

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)

例子:

>>> flatten((1, [21, {'a': 'aaa', 'b': 'bbb'}], 3))
'1, 21, a: aaa\nb: bbb, 3'
于 2022-02-10T17:48:52.623 回答