列表理解遗漏值
List Comprehension Leaving Out Values
我的列表理解代码有点问题。给定不同整数的有序列表 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]
我的列表理解代码有点问题。给定不同整数的有序列表 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]