如何在列表中创建列表,其中每个将来的列表都由列表中的空格分隔

时间:2018-08-27 11:29:22

标签: python string python-3.x list input

用户为输入提供空格:

row = list(input())

print(row)

['1','2','3',' ','4','5','6',' ','7','8','9',' ']

所以我需要在下面创建“行”列表。该列表根据空格分为多个子列表:

[['1','2','3'],['4','5','6'],['7','8','9']]

4 个答案:

答案 0 :(得分:4)

您可以使用str.split来分隔空格:

myinput = '123 456 789'
row = list(map(list, myinput.split()))

print(row)

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

或者,使用列表理解:

row = [list(i) for i in myinput.split()]

答案 1 :(得分:2)

您可以使用str.split在空格处分割输入,以提供子字符串列表。

例如'123 456 789'将变成['123', '456', '789']

然后使用list()构造函数(如您所熟悉的),使用list-comprehension将这些字符串转换为字符列表。

制作最终代码:

row = [list(s) for s in input().split()]
#[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

答案 2 :(得分:0)

从列表而不是字符串开始,可以使用itetools.groupby

from itertools import groupby

row = ['1','2','3',' ','4','5','6',' ','7','8','9',' ']

out = [list(group) for key, group in groupby(row, lambda x: x != ' ') if key]
print(out)
# [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

我们根据值是否为空格对它们进行分组,仅保留不由空格组成的组。

答案 3 :(得分:0)

尝试一下:

abc=['1','2','3',' ','4','5','6',' ','7','8','9',' ']
newList=list()
temp=list()
for i in abc:
    if(i==' '):
      newList.append(temp)
      temp=list()
    else:
      temp.append(i)
print(newList)

输出:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]