如何在Python中打印一个无括号元组列表

24
我正在寻找一种打印元组元素但不带括号的方法。
这是我的元组:
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 

6
你确实想要那些双逗号吗? - Erik Kaplun
5个回答

23

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

1
print ', ,'.join(map(str, mytuple)) 会做同样的事情吗? - Mr_and_Mrs_D
1
@Mr_and_Mrs_D 不行,因为我们需要的是 i[0] for i 而不是 i for i - TerryA

20

你也可以这样做:

mytuple = (1,2,3)
print str(mytuple)[1:-1]

10
mytuple = [(1.0,),(25.34,),(2.4,),(7.4,)]
for item in mytuple:
    print(*item) # *==> unpacking 

1
我遍历元组列表,然后遍历元组中的“items”。
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

为了获得您上述提到的确切结果,您可以随时添加。
print item + ','

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接