Одна строка для цикла в несколько строк Python - PullRequest
0 голосов
/ 04 октября 2018

У меня проблемы с возвратом из цикла в одну строку в цикл из нескольких строк.вот оригинальный код:

sequences = [[[item.strip() for item in itemset.split(",")] for itemset in sequence] for sequence in sequences]

Многострочный цикл, который я пробовал:

for sequence in sequences:
 for itemset in sequence:
    for item in itemset.split(","):
       sequences.append(item.strip())

Он не работает как исходный.Есть идеи?

1 Ответ

0 голосов
/ 04 октября 2018

Ваш исходный вопрос переназначает результат с тем же именем данных (sequences).Здесь я присваиваю результат переменной result.

Учитывая, что вы не предоставили пример данных, я просто составил некоторые (sequences).

Ваше первоначальное понимание спискавложенные (обратите внимание на квадратные скобки), каждый слой создает отдельный список.

[[[x.strip() for x in something] for something in something_else] for something_else in sequences].

Я воссоздал эту структуру, создав новый список с каждым for-loop, добавляя его по мере соответствия исходному пониманию списка.

# Sample data.
sequences = [['the, quick, brown fox'], ['jumped, over, the lazy dog']]

# Solution.
result = []
for sequence in sequences:
    inner_list = list()
    result.append(inner_list)
    for itemset in sequence:
        inner_list_2 = list()
        inner_list.append(inner_list_2)
        for item in itemset.split(","):
            inner_list_2.append(item.strip())
>>> result
[[['the', 'quick', 'brown fox']], [['jumped', 'over', 'the lazy dog']]]

# Original list comprehension.
>>> [[[item.strip() for item in itemset.split(",")] 
      for itemset in sequence] 
     for sequence in sequences]
[[['the', 'quick', 'brown fox']], [['jumped', 'over', 'the lazy dog']]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...