抱歉,如果另一个线程已经对此进行了说明.我对Python(特别是3)有些陌生,所以也许答案是在概念上类似的问题,但我错过了相关性.
我正在遍历列表列表,类似于以下内容:
biglist = [[a, b, x, d], [a, b, x, d], [a, b, y, d], [a, b, y, d], [a, b, z, d], [a, b, x, d]]
每当给定子列表中的第三个元素与上一个子列表中的第三个元素不同时,我想有条件地执行某些操作.在上面的示例中,第三子列表(y!= x),第五子列表(z!= y)和第六子列表(x!= z)会发生这种情况.
每当发生这种不匹配时,我都想修改当前子列表中相应的第一个元素. (请注意-我知道在遍历列表时通常不会更改列表,但我相信可以修改列表的列表的其他元素[与添加或删除条目相对).例如,在上述情况下,我希望循环产生以下更改的大列表:
biglist = [[a, b, x, d], [a, b, x, d], [new_a, b, y, d], [a, b, y, d], [new_a, b, z, d], [new_a, b, x, d]]
在花了几个小时玩完索引并阅读了其他线程之后,我仍然陷入困境.任何帮助将非常感激.
解决方法:
以下代码可实现所需的结果:
biglist = [['a', 'b', 'x', 'd'],
['a', 'b', 'x', 'd'],
['a', 'b', 'y', 'd'],
['a', 'b', 'y', 'd'],
['a', 'b', 'z', 'd'],
['a', 'b', 'x', 'd']]
for i in range(len(biglist)):
if i > 0:
if biglist[i][2] != biglist[i-1][2]:
biglist[i][0] = 'new_' + biglist[i][0]
print(biglist)
使用python 3.4.1