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

2024-09-30 18:14:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张这样的单子

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,".")

Tags: 方法in列表foriflist单子效率
2条回答

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

您可以使用正则表达式:

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

相关问题 更多 >