将列表中的多个点拆分为多个单个点

时间:2019-02-27 15:57:25

标签: python list

我有一个看起来像这样的列表

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 :(得分:1)

您可以使用嵌套式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', '.', '.']

答案 1 :(得分:0)

您可以使用正则表达式:

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']