Разделение нескольких точек в списке на несколько отдельных точек - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть список, который выглядит следующим образом

list=[Item0,'.','.','.','...','.',Item1,'.','.']

Какой самый эффективный способ разделить «...», поэтому список выглядит следующим образом

list=[Item0,'.','.','.','.','.','.','.',Item1,'.','.']

Я пробовал это, но я знаю, что это вообще не эффективно.

for n,sign in enumerate(list):
        if ".." in sign:
            list[n]="."
            list.insert(n+1,".")
            list.insert(n + 2,".")

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать регулярное выражение:

import re

l = ['.', '...', 'Item1']

new_l = []
for i in l:
    if re.fullmatch(r'\.{2,}', i):
        new_l.extend(j for j in i)
    else:
        new_l.append(i)

print(new_l)
# ['.', '.', '.', '.', 'Item1']
0 голосов
/ 27 февраля 2019

Вы можете использовать вложенное понимание ist, проверяя, являются ли all символы в строках (при условии, что все элементы являются строками) ., а затем итерируя отдельные символы, в противном случае берется сам элемент.

>>> Item0, Item1 = "Item0", "Item1"
>>> lst = [Item0,'.','.','.','...','.',Item1,'.','.']
>>> [y for x in lst for y in (x if all(c=='.' for c in x) else [x])]
['Item0', '.', '.', '.', '.', '.', '.', '.', 'Item1', '.', '.']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...