我需要将输入(整数系列)转换为一堆列表。
样本输入:
3
2
2 2 4 5 7
样本输出:
list1=[3]
list2=[2]
list3=[2,2,4,5,7]
我正在尝试这样做:
list=[]
import sys
for line in sys.stdin:
list.append(line)
但打印列表返回
['3\n', '2\n', '2 2 4 5 7']
用于split
将字符串拆分为列表,例如:
>>> '2 2 4 5 7'.split()
['2', '2', '4', '5', '7']
如您所见,元素是字符串。如果要将元素作为整数,请使用int
和列表推导:
>>> [int(elem) for elem in '2 2 4 5 7'.split()]
[2, 2, 4, 5, 7]
因此,在您的情况下,您会执行以下操作:
import sys
list_of_lists = []
for line in sys.stdin:
new_list = [int(elem) for elem in line.split()]
list_of_lists.append(new_list)
您最终将获得一个列表列表:
>>> list_of_lists
[[3], [2], [2, 2, 4, 5, 7]]
如果您想将这些列表作为变量,只需执行以下操作:
list1 = list_of_lists[0] # first list of this list of lists
list1 = list_of_lists[1] # second list of this list of lists
list1 = list_of_lists[2] # an so on ...
这是一种方法:
import ast
line = '1 2 3 4 5'
list(ast.literal_eval(','.join(line.split())))
=> [1, 2, 3, 4, 5]
这个想法是,对于您阅读的每一行,您都可以使用literal_eval()
. 另一个更短的选择是使用列表推导:
[int(x) for x in line.split()]
=> [1, 2, 3, 4, 5]
以上假设数字是整数,如果数字有小数,请替换int()
为。float()