【问题标题】:Python: Compare elements of list with previous and next list of elements?Python:将列表的元素与上一个和下一个元素列表进行比较?
【发布时间】:2016-02-17 00:14:25
【问题描述】:

我有一个列表,比如说

list1 = [('A',[R]),
         ('B',['A','C']),
         ('C',['B']),
         ('B',[]),
         ('C',['D']),
         ('D',['C'])]

我正在尝试将第二个列表 ['A','C'] 的第二个元素与前一个列表第一个元素 'A' 和下一个列表第一个元素 ['C'] 进行比较。同样,我想将列表的所有第二个元素与上一个和下一个列表的第一个元素进行比较。到目前为止我尝试的是

for i, items in enumerate (list1):
    for j in items[1]:
        if len(j)>0:
            if i !=0 and j == items[i-1][0]:
                print(j,items[i-1][0],'equal')
            if i < len(list1) and j==items[i+1][0]:
                print(j,items[i+1][0],'equal')

它显示错误为" tuple index out of range "。请纠正我哪里出错了? 预期的结果就像

(A,A,equal)
(C,C,equal)
(B,B,equal)
(B,B,equal)
(D,D,equal)
(C,C,equal)

【问题讨论】:

  • 我猜错误在这个代码项[i+1][0]
  • 不,我查过还是一样

标签: list python-2.7 python-3.x tuples


【解决方案1】:

引用item的时候需要用到list1

            if i !=0 and j == list1[i-1][0]:
                print(j,list1[i-1][0],'equal')
            if i -1 < len(list1) and j==list1[i+1][0]:
                print(j,list1[i+1][0],'equal')

不确定if len(j)&gt;0: 是什么,因为 j 是一个字符。也许只是if j:

这可能更容易理解代码。

for i, row in enumerate (list1): # Use the list1[1] list as the key data
    for item in row[1]: # Compare all items in this list with previous row first element
                        # and next row first element
        if i > 0: # Previous row
            if item == list1[i-1][0]: 
                print ('{} : {} equal'.format(item, list1[i-1][0]))
        if i < len(list1) - 1: # Next row
            if item == list1[i+1][0]: 
                print ('{} : {} equal'.format(item, list1[i+1][0]))

【讨论】:

    【解决方案2】:

    正确的代码如下:

    for i, items in enumerate(list1):
        for j in items[1]:
            if len(j)>0:
                if i!=0 and j==list1[i-1][0]:
                    print(j,j,'equal')
                if i+1 < len(list1) and j==list1[i+1][0]:
                    print(j,j,'equal')
    

    您应该在if 语句中使用list1,而不是items

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2022-11-22
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      相关资源
      最近更新 更多