将元组列表中的每个项更改为其整数值

时间:2016-05-31 21:41:13

标签: python list python-3.x tuples

如何更改以下内容:

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

2 个答案:

答案 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时,您仍然有一个字符串列表。