下面是生成任意两个三位数乘积的代码
integers_list = [(i * x) for i in range(100,1000) for x in range(100,1000)]
string_list = (map(str, integers_list))
integers_list.sort()
string_list.sort()
print integers_list[-10:-1]
print string_list[-10:-1]
给出:
[995004, 995004, 995006, 995006, 996003, 996003, 996004, 997002, 997002]
['99994', '99994', '99996', '99996', '99997', '99997', '99999', '99999', '99999']
如果我在列表理解中使用 str(i * x)
也会发生这种情况。
给定表达式,字符串列表中的数字甚至是不可能的。
为什么会发生这种情况,我该如何解决?
最佳答案
字符串的排序顺序与整数不同。 9800 大于 990,但 '9800' 小于 '990'。
关于Python - str() 函数完全改变列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711321/