从另一个列表中的元素创建一个列表,同时在python中将这些元素划分为后续列表



我确信这个问题已经被问过了(可能以更雄辩的方式(,但我找不到答案,因此如果这是一个重复的,我深表歉意。

我正在尝试遍历一个列表,并将每个不是数字的元素添加到另一个列表中。但是,每次在原始列表中遇到数字时,我都希望在辅助列表中创建一个新列表。例如,如果"a3buysi8byjs"是输入,则输出将为:[[a], [b,u,y,s,i], [b,y,j,s]]。

我已经尝试了几件事,并决定简化我的代码并从头开始,这导致了以下结果:

for e in S_li: #going through initial list, all elements available
if e.isdigit() != True: # if it is an integer, create another list within poss 
poss.extend(e) #if it is a letter add to the same list in poss.

*我也留下了我的评论,因为也许这将有助于澄清我的意图。

提前感谢!

我相信这应该能让你得到你想要的东西:

s =  'a3buysi8byjs5'
partial = []
final = []
for c in s:
if c.isdigit():
final.append(partial)
partial = []
else:
partial.append(c)
if len(partial) > 0:
final.append(partial)
print(final)

这应该打印出来:[['a']

, ['b', 'u', 'y', 's', 'i'], ['b', 'y', 'j', 's']]

这将适用于您的字符串:

#!/usr/bin/env python
data = 'a3buysi8byjs'
if data[-1].isdigit():
data += "1"
sublist = []
target = []
for i in data:
if i.isdigit():
target.append(sublist)
sublist = []
else:
sublist.append(i)

print(target)

将打印:

[['a'], ['b', 'u', 'y', 's', 'i'], ['b', 'y', 'j', 's']]

使用 itertools.groupby 的替代方案:

[list(k) for i, k in itertools.groupby(data, lambda x: x.isdigit()) if not i]

最新更新