gpt4 book ai didi

python - 在排序期间尝试引用列表时出现 IndexError

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:47 24 4
gpt4 key购买 nike

这是 Python 中的一个奇怪的错误:

l1 = ['a', 'ab', 'cc', 'bc']
l1.sort(key=lambda x: zip(*l1)[0].count(x[0]))

此代码片段的目的是按元素首字母出现的频率对元素进行排序。但是,这会产生错误:

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

但是,单独计算 key 不会给我错误:

sortkeys = [zip(*l1)[0].count(x[0]) for x in l1]

这是哪里 IndexError来自(哪里?当然,zip(*l1)[0]不为空(它等于 ('a', 'a', 'c', 'b') ),并且 x[0]不能为空,因为所有列表元素都非空...那么发生了什么?

编辑:我很清楚这不是对列表进行排序的理想方式。我很好奇为什么会发生这种情况,而不是我应该写的内容。

最佳答案

您可以对此进行调查,以确认列表在就地排序时确实是空的。事实上 - 恕我直言,这是非常好的编程 - 因为它会给程序员带来错误,忘记它是就地排序的,而不是产生以后很难找出的错误。

试试这个:

l1 = ['a', 'ab', 'cc', 'bc']

def y(x):
print l1
return zip(*l1)[0].count(x[0])
y('cc')
l1.sort(key = y)

输出将是:

['a', 'ab', 'cc', 'bc']
[]

(然后是异常(exception))

关于python - 在排序期间尝试引用列表时出现 IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192254/

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