如何从元组中删除最后一个逗号?

4

我该如何将列表中每个元组内的逗号去除?
我希望从一个列表中制作出元组列表,形式如下:

l = [1,2,3,5,4]

l1 = [ ]

l2 =  [ ]

for i in l:

    l1.append (i)
    t = tuple(l1)
    l2.append(t)
    l1 = []

print l2

预期结果:

[(1), (2), (3), (5), (4)]

实际结果:

[(1,), (2,), (3,), (5,), (4,)]

4
不行,那是表示一个单元素元组的语法(逗号才是关键,而不是括号)。无论如何,你为什么要这样做呢? - jonrsharpe
如果您删除逗号,它将不再是元组。 - Yoriz
1
在Python shell中键入以下内容:[(1), (2), (3), (5), (4)],看看你得到了什么 - 然后你就会明白为什么这个问题毫无意义!(除非你想知道如何以混乱的方式打印元组列表...) - Ray Toal
@jonrsharpe 这里是我需要这样做的一个地方: dict2 = {key: 'entry' + str(key) for key in itertools.product([1,2], [4,5])},引用 dict2[1,4] 是可以的。但是 dict1 = {key: 'entry' + str(key) for key in itertools.product([1,2,3])},引用 dict1[2] 会出现 KeyError。但是如果去掉尾部的逗号,它将正常工作。 - Rich L
1个回答

2

如果你只想显示列表中每个元组的第一个元素(不需要逗号),你可以通过手动格式化输出来实现,例如:

l = [1, 2, 3, 5, 4]
l1 = []
l2 = []
for i in l:
    l1.append(i)
    t = tuple(l1)
    l2.append(t)
    l1 = []

print '[' + ', '.join('({})'.format(t[0]) for t in l2) + ']'

输出:

[(1), (2), (3), (5), (4)]

顺便说一下,你也可以将 l2 的构建简化为以下代码:

l2 = [tuple([value]) for value in l]

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