【发布时间】:2016-10-19 21:33:53
【问题描述】:
我正在尝试遍历列表,但同时参考之前的项目,以便进行比较。
这是我的代码:
list1=[(1,'a','hii'),(2,'a','byee'),(3,'a','yoo'),(4,'b','laa'),(5,'a','mehh')]
我想循环遍历我的 list1 元组,如果元组中的第二个值与之前元组中的第二个值相同(都 =='a'),则连接元组中的第三个项目。
我想要的输出:
list2=[('a','hii,byee,yoo'),('b','laa'),('a','mehh')]
我的尝试:
for item in list1:
for item2 in list2:
if item[0]==(item2[0]-1) and item[1]==item2[1]:
print item[2]+','+item2[2]
elif item[0] != item2[0]-1:
continue
elif item[0]==(item2[0]-1) and item[1] != item2[1]:
print item[2]
输出错误
hii,byee
byee,yoo
yoo
laa
从前 2 个输出来看,循环似乎只查看前面的值,而不是前面的 2 个或更多值。因此,它只将 2 个单词连接在一起,而不是应有的 3 个单词。输出也会有重复。
我该如何解决这个问题?
【问题讨论】:
-
你真的只想合并相邻的元组吗?也就是说,前三个都被合并了,但最后一个,
'mehh',不与列表前面的那些合并? -
它必须是相邻的,并且元组的第二个值必须相同(都=='a'或其他值)并且元组的第一项必须大于前一个乘 1。因此,如果满足要求,它可能是前 3 或前 'n'。此外,我的列表已经按元组的第一个值排序。