比较列表元素 - python

我编写了一个简单的代码:

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的基本知识。
谢谢你的帮助!

参考方案

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

由于arr包含9,这将引发超出范围的错误。另外,您需要在x语句之前定义if,否则会收到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 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak&#…

Python:对于长时间运行的进程,通过还是休眠? - python

我正在编写一个队列处理应用程序,该应用程序使用线程等待和响应要发送到该应用程序的队列消息。对于应用程序的主要部分,只需要保持活动状态即可。对于像这样的代码示例:而True: 通过要么而True: time.sleep(1)哪一个对系统的影响最小?除了保持python应用运行外,什么都不做的首选方式是什么? 参考方案 我可以想象time.sleep()会减少系…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python:无符号32位按位算术 - python

试图回答另一篇有关其解决方案涉及IP地址和网络掩码的文章时,我陷入了普通的按位算法。在Python中,是否存在一种标准的方式来进行按位AND,OR,XOR,NOT运算,假设输入是“32位”(可能是负数)整数或long,并且结果必须是[[ 0,2 ** 32]?换句话说,我需要一个与无符号长整数之间的C按位运算有效的Python对应物。编辑:具体问题是这样的:…

>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5