访问上一个列表的列表项

时间:2018-01-20 17:08:07

标签: python python-3.x

我在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],但这不对。

任何人都可以提出任何建议吗?

4 个答案:

答案 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)