gpt4 book ai didi

python - 比较列表元素

转载 作者:行者123 更新时间:2023-12-01 08:47:24 28 4
gpt4 key购买 nike

我做了一个简单的代码:

arr =  [4, 9, 5, 3, 2, 10]
kpmp = [] # Empty list to store the comparison

for i in arr:
if i>0:
x = 0
j = i
while j>=0:
j-=1
if arr[i] > arr[j]:
x+=1
kpmp.append(x)
print(kpmp)

但是,我收到了这个错误:

Traceback (most recent call last):
File "python", line 11, in <module>
IndexError: list index out of range

这是哪一行 if arr[i] > arr[j]:

我想要打印的预期输出是一个列表[0, 0, 1, 3, 4, 0]
说明:
arr = [4, 9, 5, 3, 2, 10]
1. 4没有什么可比较的所以结果是0
2. 9 > 4 结果为0
3. 4 < 5 < 9 结果为 1
4. 3 < 4 < 5 < 9 结果是 3
5. 2 < 3 < 4 < 5 < 9 结果是 4
6. 嗯,10 是列表中最大的,所以结果是 0

我被困在这里了,不过有点 Python 的基础知识。
感谢您的帮助!

最佳答案

您当前正在使用列表的元素作为索引,如果它们大于列表的长度,则会导致超出范围错误。

由于 arr 包含 9,这将引发超出范围的错误。此外,您需要在 if 语句之前定义 x,否则您将收到 variable not found 错误。

这是使用列表理解和 slicing 来解决您的问题的不同解决方案:

x = [4, 9, 5, 3, 2, 10]
final = [sum(k > j for k in x[:i]) for i, j in enumerate(x)]

# [0, 0, 1, 3, 4, 0]

解释:

sum(k > j for k in x[:i])

这会计算所有大于当前值的先前值。 x[:i] 获取列表中当前元素之前的所有元素。

关于python - 比较列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50403479/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com