如何更改以下内容:
from itertools import product
list1 = input().split()
list2 = input().split()
result = product(list1, list2)
for item in result:
print(item, end=" ")
打印:
1 2
3 4
(1, 3) (1, 4) (2, 3) (2, 4)
而不是:
1 2
3 4
('1', '3') ('1', '4') ('2', '3') ('2', '4')
更新:即使我编写了以下代码,它仍然存在同样的问题:
from itertools import product
list1 = input().split()
list1_cleaned = []
for item in list1:
if int(item)>0 and int(item)<30:
list1_cleaned.append(int(item))
list2 = input().split()
list2_cleaned = []
for item in list2:
if int(item)>0 and int(item)<30:
list2_cleaned.append(int(item))
result = product(list1, list2)
for item in result:
print(item, end=" ")
并打印:
1 2
3 4
('1', '3') ('1', '4') ('2', '3') ('2', '4')
Process finished with exit code 0
答案 0 :(得分:2)
使用list(map(int, input().split()))
将输入字符串转换为整数列表。当您构建列表的产品时,您将获得整数元组而不是数字字符串元组。
答案 1 :(得分:1)
这是一种方式。你可以单独使用地图,我只是想使用lambda。
>>> from itertools import product
>>> list1 = input().split()
1 2
>>> list2 = input().split()
3 4
>>> to_int = lambda x: map(int, x)
#or, result = product(map(int, list1), map(int, list2)) whichever you prefer.
>>> result = product(to_int(list1), to_int(list2))
>>> for item in result:
... print(item, end=" ")
...
(1, 3) (1, 4) (2, 3) (2, 4) >>>
类型:
>>> result = product(to_int(list1), to_int(list2))
>>> for item in result:
... for val in item:
... print(type(val))
...
<class 'int'>
#so on and so forth
编辑:在您的更新中,您将转换为int
并检查整数是否在(0,30)中,但是当您使用product
时,您仍然有一个字符串列表。