Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:类型为';int';没有len()_Python_Arrays_Sorting - Fatal编程技术网

Python 错误:类型为';int';没有len()

Python 错误:类型为';int';没有len(),python,arrays,sorting,Python,Arrays,Sorting,我有一个函数,它应该获取一个数组,并将其从最小字符串大小排序到最大字符串大小,然后使用注入排序打印它 在线:while(j>=0)和(len(b[j])>键): 我得到这个错误: “int”类型的对象没有len() 代码: 您可以使用至少\u 1d()或tolist()来确保在处理标量和数组/列表的潜在混合时,对象将具有len()。您可以使用至少\u 1d()或tolist()来确保对象将具有len()处理标量和数组/列表的潜在混合时。我不确定您是如何开始生成错误的,因为[“alice”、“bo

我有一个函数,它应该获取一个数组,并将其从最小字符串大小排序到最大字符串大小,然后使用注入排序打印它

在线:
while(j>=0)和(len(b[j])>键):

我得到这个错误:

“int”类型的对象没有len()

代码:


您可以使用
至少\u 1d()
tolist()
来确保在处理标量和数组/列表的潜在混合时,对象将具有
len()

您可以使用
至少\u 1d()
tolist()
来确保对象将具有
len()
处理标量和数组/列表的潜在混合时。

我不确定您是如何开始生成错误的,因为
[“alice”、“bob”、“sally”]
的输入没有崩溃,但它确实生成了数字


这可能是因为您分配了
b_-list[j+1]=keyValue
,其中
keyValue=len(b_-list[i])
,这将是一个int,因此,如果您再次点击该元素,并尝试对其执行
len()
,您就会看到错误

现在,我们从

打印出来

bob
alice
sally

我不确定您是如何开始生成错误的,因为
[“alice”、“bob”、“sally”]
的输入没有崩溃,但它确实生成了数字


这可能是因为您分配了
b_-list[j+1]=keyValue
,其中
keyValue=len(b_-list[i])
,这将是一个int,因此,如果您再次点击该元素,并尝试对其执行
len()
,您就会看到错误

现在,我们从

打印出来

bob
alice
sally

听起来好像您有一个整数和字符串的混合列表,并且希望按字符串的长度排序。如果是这种情况,请在排序之前将整个列表转换为类似的类型——字符串

鉴于:

>>> li=[1,999,'a','bbbb',0,-3]
你可以做:

>>> sorted(map(str, li), key=len)   
['1', 'a', '0', '-3', '999', 'bbbb']
>>> sorted(map(str, li), key=lambda e: (len(e), e))
['0', '1', 'a', '-3', '999', 'bbbb']
如果需要按长度进行双键排序,则可以执行以下操作:

>>> sorted(map(str, li), key=len)   
['1', 'a', '0', '-3', '999', 'bbbb']
>>> sorted(map(str, li), key=lambda e: (len(e), e))
['0', '1', 'a', '-3', '999', 'bbbb']
通过向键函数添加
str
,可以在不更改对象类型的情况下进行排序:

>>> sorted(li, key=lambda e: (len(str(e)), str(e)))
[0, 1, 'a', -3, 999, 'bbbb']

听起来好像您有一个整数和字符串的混合列表,并且希望按字符串的长度排序。如果是这种情况,请在排序之前将整个列表转换为类似的类型——字符串

鉴于:

>>> li=[1,999,'a','bbbb',0,-3]
你可以做:

>>> sorted(map(str, li), key=len)   
['1', 'a', '0', '-3', '999', 'bbbb']
>>> sorted(map(str, li), key=lambda e: (len(e), e))
['0', '1', 'a', '-3', '999', 'bbbb']
如果需要按长度进行双键排序,则可以执行以下操作:

>>> sorted(map(str, li), key=len)   
['1', 'a', '0', '-3', '999', 'bbbb']
>>> sorted(map(str, li), key=lambda e: (len(e), e))
['0', '1', 'a', '-3', '999', 'bbbb']
通过向键函数添加
str
,可以在不更改对象类型的情况下进行排序:

>>> sorted(li, key=lambda e: (len(str(e)), str(e)))
[0, 1, 'a', -3, 999, 'bbbb']


你期望len(b_list[j])是什么?如果你在你说的地方得到了错误,那么你也应该在
keyValue=len(b_list[i])
b_list[j+1]=keyValue
-你确定你在那里分配了正确的值吗?你说你在对字符串数组排序,但它听起来像是一个数字数组。除了在
range()
中使用之外,您确定要使用
len()
?看起来你可能只想要
b_list[j]
j
或什么的。你期望
len(b_list[j])
是什么?如果你说的地方出现了错误,那么你也应该在
keyValue=len(b_list[i])
b_list[j+1]=keyValue
-您确定在那里分配了正确的值吗?您说您正在对字符串数组进行排序,但听起来好像它是一个数字数组。除了在
range()
中使用之外,您确定要使用
len()
?看起来你可能只想要
b_list[j]
j
之类的东西。他想要的是字符串的长度,而不是列表。@Barmar显然他的字符串列表包含没有
len()
的对象。这将让他的脚本运行并进行排序。然后,他可以在结果的一端找到没有长度的对象,这可能有助于调试。但是
tolist()
会将所有字符串转换为一个字符串列表,因此所有字符串都具有len=1。正如其他人所指出的,问题在于,他在循环中有一个错误,用数字替换字符串
b_list[j+1]=keyValue
@Barmar我看你是对的。这个答案根本解决不了问题。抱歉。他想要的是字符串的长度,而不是列表。@Barmar显然他的字符串列表包含的对象没有
len()
。这将让他的脚本运行并进行排序。然后,他可以在结果的一端找到没有长度的对象,这可能有助于调试。但是
tolist()
会将所有字符串转换为一个字符串列表,因此所有字符串都具有len=1。正如其他人所指出的,问题在于,他在循环中有一个错误,用数字替换字符串
b_list[j+1]=keyValue
@Barmar我看你是对的。这个答案根本解决不了问题。很抱歉