我在python 3.x中有一个列表列表:
def chooseReport():
print "Choose a report."
while True:
choice = raw_input("Enter A or B: ")
if "a" in choice or "A" in choice:
reportA()
break
elif "b" in choice or "B" in choice:
reportB()
break
else:
continue
我想比较/操作当前列表中的各个项目(例如deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
)与之前的列表(例如[2,7,8]
)。我该怎么做?
使用以下示例代码测试此功能:
[1,5,3]
当我在列表deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
for data in deliveryData[1:]:
print(data)
print(data[-1])
上时,我想我可以使用[1,5,3]
访问列表data[-1]
,但这不对。
任何人都可以提出任何建议吗?
答案 0 :(得分:5)
从i-1
开始,只需访问i=1
以前的列表:
deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
for i in range(1, len(deliveryData)):
print("Current:", deliveryData[i])
print("Previous:", deliveryData[i-1])
哪个输出:
Current: [2, 7, 8]
Previous: [1, 5, 3]
Current: [8, 10, 5]
Previous: [2, 7, 8]
答案 1 :(得分:3)
deliveryData[-1]
将始终返回deliveryData
中的最后一个元素。
使用zip
而不是打扰索引:
for p_data, c_data in zip(deliveryData, deliveryData[1:]):
print(p_data, c_data)
# [1, 5, 3] [2, 7, 8]
# [2, 7, 8] [8, 10, 5]
与@ RoadRunner的答案不同, 会在内存中创建一个额外的列表(以保存deliveryData[1:]
)。这可能是也可能不是问题。
答案 2 :(得分:0)
你不能像这样编制索引:
deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
for data in deliveryData[1:]:
print(data)
print(deliveryData[deliveryData.index(data)-1])
答案 3 :(得分:0)
deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
如果要访问deliveryData中的前两个列表:
for i in deliveryData[:-1]:
print(i)