给定以下文本:
input_value= """12
23
54"""
我想返回每行的第一个和第二个元素组成的列表:
[[1,2,5], [2,3,4]]
我试图使用一行代码来实现这个,但是很难访问每行的正确索引,然后将它们放入一个单独的列表中。返回的列表数量应该等于每行上存在的数字数:
我尝试了以下代码作为基础,但显然需要更多的逻辑才能检索正确的数字:
new_list = [[elem] for elem in input_value.split('\n')]
给定以下文本:
input_value= """12
23
54"""
[[1,2,5], [2,3,4]]
我试图使用一行代码来实现这个,但是很难访问每行的正确索引,然后将它们放入一个单独的列表中。返回的列表数量应该等于每行上存在的数字数:
我尝试了以下代码作为基础,但显然需要更多的逻辑才能检索正确的数字:
new_list = [[elem] for elem in input_value.split('\n')]
使用嵌套的列表推导式:
out = [[int(i) for i in x] for x in zip(*input_value.split('\n'))]
输出:
[[1, 2, 5], [2, 3, 4]]
你可以使用类似于
[[*elems] for elems in zip(*input_value.split("\n"))]
编辑: 要创建一个整数列表,请使用
[[*map(int, elems)] for elems in zip(*input_value.split("\n"))]
[*elems]
替换为 [*map(int,elems)]
或 [int(c) for c in elems]
。 - Ben Grossmanninput_value= """12
23
54
"""
lst1 = []
lst2 = []
for i in input_value.splitlines():
if i:
lst1.append(int(i[0]))
lst2.append(int(i[1]))
lst = [lst1, lst2]
print(lst)
看看这是否有效。
另一个可能的解决方案:
[[list(map(int,x))[y] for x in input_value.split()] for y in range(2)]
输出:
[[1, 2, 5], [2, 3, 4]]