'str' 和 'int' 实例之间不支持'<'



我需要一些关于Python3的帮助,请

我有一个简单的代码,它将列表的最小值转换为字符串

source_array = [5,2,3,7]
i = 0

while min(source_array) % 2 == 0:
i = source_array.index(min(source_array))
source_array[i] = str(source_array[i])

它给了我一个错误:'<' not supported between instances of 'str' and 'int'

我认为,这只是一种语言功能,但这样的代码非常有效:

b = [5,2,3,7]
b[1] = str(b[1])
print(b)
Output:
[5, '2', 3, 7]

这种行为的原因是什么?

必须消除非int值才能获得最小值。您可以使用lambda函数来获取仅包含int值的新列表

source_array = [5,2,3,7]
i = 0

while min(list(filter(lambda x: type(x) == int, source_array))) % 2 == 0:
i = source_array.index(min(source_array))
source_array[i] = str(source_array[i])
print(source_array)

输出

[5, '2', 3, 7]

编辑:

我检查过是否有4个数字没有3个。算法无法正常工作。我必须将filterlambda表达式定义为source_array.index(...)。但是,我不喜欢多次定义同一个命令。也许您可以使用一个变量作为临时列表。

注意如果所有数字都是偶数,您将得到另一个错误,您应该检查是否有任何项为int?

source_array = [5,2,4,7]
i = 0

while min(list(filter(lambda x: type(x) == int, source_array))) % 2 == 0:
i = source_array.index(min(list(filter(lambda x: type(x) == int, source_array))))
source_array[i] = str(source_array[i])
print(source_array)

输出:

[5, '2', '4', 7]

更多的偶数和一个奇数。

source_array = [12, 4, 8, 6, 15]
['12', '4', '8', '6', 15]

这一个工作得很好:

source_array = [5,2,3,7]
i = 0

if min(source_array) % 2 == 0:
i = source_array.index(min(source_array))
source_array[i] = str(source_array[i])
print(source_array)

问题出在循环中,第二次进入while时,它正在比较字符串和int,但它不喜欢它

相关内容

最新更新