微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列表推导遗漏了值

如何解决列表推导遗漏了值

我的列表理解代码有点麻烦。给定不同整数的有序列表X和类似列表Y,构造所有对(x,y)的列表,使得x来自X,y来自Y,x

例如:输入-> 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 )等。有人可以告诉我为什么会这样吗?

解决方法

之所以发生这种情况,是因为您在列表理解中循环了Xstr和Ystr,并且因为它们是字符串,所以'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]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。