Как создать списки в списке, где каждый будущий список разделен пробелами в списке - PullRequest
0 голосов
/ 27 августа 2018

Пользователь вводит пробелы:

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 голосов
/ 27 августа 2018

Попробуйте это:

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']]
0 голосов
/ 27 августа 2018

Вы можете использовать str.split, чтобы разделить ввод на пробелы, чтобы получить список подстрок.

например. '123 456 789' станет ['123', '456', '789'].

Затем используйте list-compceptionsion , чтобы преобразовать эти строки в списки символов с помощью конструктора list() (как вы уже знакомы).

Создание окончательного кода:

row = [list(s) for s in input().split()]
#[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
0 голосов
/ 27 августа 2018

Начиная со своего списка, а не со строки, вы можете сделать это, используя 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']]

Мы группируем значения в зависимости от того, являются ли они пробелами, иоставляйте только те группы, которые не состоят из пробелов.

0 голосов
/ 27 августа 2018

Вы можете использовать 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()]
...