【问题标题】:Compare the elements of a list in python比较python中列表的元素
【发布时间】:2017-09-09 03:14:22
【问题描述】:

我想遍历一个列表并想比较列表的元素。例如:第一个元素将与下一个元素进行比较。我有一个清单:

for i in range(len(a))
    for i+1 in range(len(a)) #check code
        if a[i] == a[i+1]
           a.pop(i+1)

有人可以建议如何在 python 中执行此操作吗?

【问题讨论】:

标签: python loops comparison iteration elements


【解决方案1】:

您没有按元素迭代列表(即for el in a),这是一件好事,因为我相信修改您正在迭代的列表是行不通的。 但是,您的方法仍然存在缺陷,因为在循环开始时计算了许多元素 len(a) 并且索引没有考虑到您正在删除元素的事实,因此检查的元素将引用到弹出后列表中的位置(跳过元素并超出列表长度)。 您的示例使用临时列表 b 以非常简单的方式重写:

a=[1,3,3,6,3,5,5,7]

b=a[0:1]
for i in range(len(a)-1):
    print (a[i],a[i+1])
    if a[i]!=a[i+1]:
        b.append(a[i+1])
a=b

或单行版本:

from itertools import compress
list(compress(a,[x!=y for x,y in zip(a[:-1],a[1:])]))

无论如何,如果您的目的是删除列表中的连续重复项,您可以轻松地在 google 或堆栈溢出上搜索“python 从列表中删除连续重复项”。

【讨论】:

    【解决方案2】:
    for this, next_one in zip(a, a[1:]):
        compare(this, next_one)
    

    【讨论】:

    • 不要使用'next':分配给保留的内置符号:next
    【解决方案3】:

    second 元素开始,将每个元素与其前一个元素进行比较。

    for ix in range(1, len(a)):
        compare_items(a[ix], a[ix - 1])
    

    【讨论】:

      【解决方案4】:

      此解决方案是另一种可能适用于面临类似问题的人的替代方案

      for i in range(len(nums)):
          for j in range(i+1, len(nums)):
              # Then the operation you want to carry out, e.g below
              if nums[i] + nums[j] == target:
                  return(i,j)
      

      其中 nums 是您正在迭代的列表的名称,ij 是您要比较的两个项目

      【讨论】:

        猜你喜欢
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多