我正在使用Python 2.7,我在这个结构中有一个数据列表:
list = [(('a', 'b'), 'foo', (1, 2)), (('c', 'd'), 'bar', (3, 4)), (('e', 'f'), 'baz', (5, 6))]
我如何打印以获得此输出:
(a, b)
(c, d)
(e, f)
我尝试按照此print list[0:][0])
进行打印,但这会返回((a, b), 'foo', (1, 2))
然后我尝试像print list[0:][0][0])
一样打印它,但这不起作用,因为它只返回(a, b)
而没有剩下的
我正在寻找一个简短有效的解决方案,因为我将在条件中使用此元组来检查它们是否已存在于列表中
提前致谢!
答案 0 :(得分:1)
所以你的列表看起来像(用字符串替换未定义的符号):
In [135]: alist = [(('a', 'b'), 'foo', (1, 2)), (('c', 'd'), 'bar', (3, 4)), (('e', 'f', 'baz', (5, 6)))]
正常列表显示
In [136]: alist
Out[136]:
[(('a', 'b'), 'foo', (1, 2)),
(('c', 'd'), 'bar', (3, 4)),
('e', 'f', 'baz', (5, 6))]
我可以遍历列表并收集每个元组的第一个元素:
In [137]: [x[0] for x in alist]
Out[137]: [('a', 'b'), ('c', 'd'), 'e']
关闭,除了最后一个元组不同。这是故意的,还是你只是错过了一对()?
我可以定义一个小函数,为没有()的元组格式化字符串。它还可以区分3元素元组和4元素。
def pfoo1(atuple):
if len(atuple)==3:
return '(%s, %s)'%atuple[0]
else:
return '(%s, %s)'%(atuple[:2])
In [159]: for x in alist:
...: print(pfoo1(x))
...:
(a, b)
(c, d)
(e, f)
In [161]: [pfoo1(x) for x in alist]
Out[161]: ['(a, b)', '(c, d)', '(e, f)']
In [162]: print('\n'.join(_))
(a, b)
(c, d)
(e, f)
所以基本上只需要迭代列表,从每个元组中提取正确的元素,并将它们格式化为显示字符串。