python - 列出理解遗漏值
问题描述
我的列表理解代码有点麻烦。给定一个由不同整数组成的有序列表 X 和类似列表 Y,构造所有对 (x,y) 的列表,使得 x 来自 X,y 来自 Y,并且 x < y。必须对结果列表进行排序,以使 x 较小的对先行,在 x 相同的对中,y 较小的对先行(参见测试用例中的示例)。
例如:输入--> 3 4 5 6 7;1 2 3 4 5 输出:3 4 3 5 4 5
Xstrs = input().split(' ')
X = [int(x) for x in Xstrs]
Ystrs = input().split(' ')
Y = [int(x) for x in Ystrs]
Z = [(x,y) for x in Xstrs for y in Ystrs if x < y] #insert a list comprehension expression
for pair in Z: print(pair[0], pair[1])
当我放入这些列表时,上面的代码完全可以接受:
1 2 3 4 5 6 7 4 5 6 7 8 9 10
在这种情况下,在 1 个组合之后(即 (1,4)(1,5) 等),它总是会忽略与 10 的组合。例如:它会忽略 (2,10) (3,10) 等等向前。有人可以向我解释为什么会发生这种情况吗?
解决方案
发生这种情况是因为您在列表理解中循环遍历 Xstrs 和 Ystrs,并且因为它们是字符串,所以 '2' 被认为大于 '10'
只需更改此行:
Z = [(x,y) for x in Xstrs for y in Ystrs if x < y]
对此
Z = [(x,y) for x in X for y in Y if x < y]
推荐阅读
- vector - QGIS如何删除不接触多边形的网格
- python - 是否可以制作一次只包含一行 csv 的数据框?
- android - 移动应用程序如何与本地机器中的 Docker 通信?
- random - 具有可变样本量的 SAS EG 随机样本
- python - many2Many 字段的图像缩略图未显示
- javascript - 我无法返回对象
- python - 设置电子表格列值时出现 TypeError
- python-3.x - PyQt5:如何让 QTextEdit 的内容在选项卡更改时刷新?
- amazon-web-services - 使用本地 DynamoDB 实例进行单元测试生存时间字段
- javascript - 无法在 HTML 中显示多个上传的图像