我有一个看起来像这样的列表
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,".")
答案 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']