繁体   English   中英

Python:检查元素是否小于下一个元素

[英]Python: Check if element is less than the next elements

我想检查列表中的每个元素,如果它小于它之后的下一个元素,并打印所有满足条件的数字。

例子:

A = [3,1,2,4]
    

A[0] < A[3]

A[1] < A[2] 

A[1] < A[3]

A[3] < A[3]

而且我不想检查最后一个元素。

最好的方法是什么?

我试图用 for 循环做到这一点:

A = [3,1,2,4]
for i in range(0,len(A)-1):
    for j in range(i,len(A)-1):
        if A[j] < A[j + 1]:
            print(A[j],A[j + 1])
    A[j] = A[j + 1]

结果是:

1 2
2 4
1 4

虽然期望的结果是:

3 4
1 2
1 4
2 4

使用 for 循环和enumerate()

arr = [3, 1, 2, 4]

for i, e in enumerate(arr):
    # only if it's not the last element
    if (i + 1) != len(arr):
        if e < arr[i + 1]:
            print(f"arr[{i}] < arr[{i+1}]")

        elif e > arr[i + 1]:
            print(f"arr[{i}] > arr[{i+1}]")

        else:
            print(f"arr[{i}] = arr[{i+1}]")

Output

arr[0] > arr[1]
arr[1] < arr[2]
arr[2] < arr[3]

您应该修复一些比较的索引以及范围。 第一个计数器i应该从0迭代到len(A)-1 ,第二个计数器应该从i+1迭代到len(A)

比较应该发生在A[i] , A[j]而不是A[j] , A[j+1]之间。 不需要最后一行A[j] = A[j + 1]因为计数器会自动递增。

A = [3, 1, 2, 4]
for i in range(0,len(A)-1):
    for j in range(i+1,len(A)):
        if A[i] < A[j]:
            print(A[i],A[j])
3 4
1 2
1 4
2 4

或者,您可以尝试这种枚举方式,只是为了节省一些切片和一些打字...... ;-)

如果您使用enumerate ,它将返回一个带有索引的元组,并且一次全部编号,这更优雅

for i, a in enumerate(A):
    for j, b in enumerate(A[i+1:]):
        if a < b: print(a, b)

# Output:
3 4
1 2
1 4
2 4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM