Python - str() 函数完全改变列表

标签 python string list

下面是生成任意两个三位数乘积的代码

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/

相关文章:

python - 我将如何组合两个异步库?

LINQ:将多个 int 属性连接成一个字符串

python - 如何检查 List A 中的元素是否不存在于 Python 的 List B 中?

c# - 搜索列表 C#

python - 在python中从大量xml文件中提取信息的最有效方法是什么?

python - Django 错误报告 - 如何知道哪个用户触发了错误?

python - future 警告 : The default value of regex will change from True to False in a future version

Python-局部变量保留重复调用函数的内容

python - 如何制作更平滑的 Perlin 噪声发生器?

java - 计算文件中特定字符串的出现次数