[英]Split list elements in Python?
我有一個清單,
['t', 'p', 'k', 'F', 'p', 'l', 'v', 'F']
我想組由“F”,其中,“F”是該組的端部的元素,所以它splits
列表分成單獨的組。
像這樣:
['t', 'p', 'k'] ['p', 'l', 'v']
將itertools.groupby()
與以下key
功能一起使用:
from itertools import groupby
l = ['t', 'p', 'k', 'F', 'p', 'l', 'v', 'F']
result = [list(g) for k, g in groupby(l, key=lambda x: x != 'F') if k]
>>> result
[['t', 'p', 'k'], ['p', 'l', 'v']]
另一種方法是使用字符串操作:
result = [list(x) for x in ''.join(l).split('F') if x]
>>> result
[['t', 'p', 'k'], ['p', 'l', 'v']]
請注意,以上兩種解決方案都將包括在最后的'F'
所有尾隨項目。 不確定這是否是您想要的嗎?
該程序假定您的列表元素始終為單個字符。 如果不是這樣,則需要直接在列表上進行操作。 我將其轉換為字符串以使用便捷的str.split方法,然后將每個子字符串轉換回一個列表。
inp = ['t', 'p', 'k', 'F', 'p', 'l', 'v', 'F']
print(inp)
groups_as_strings = "".join(inp).split("F")
out = [list(g) for g in groups_as_strings if g]
print(out)
這是一種方式。
lst = ['t', 'p', 'k', 'F', 'p', 'l', 'v', 'F']
list(map(list, ''.join(lst).split('F')[:-1]))
# [['t', 'p', 'k'], ['p', 'l', 'v']]
簡單但易於遵循的解決方案:
new_list = []
tmp_list = []
for i in letter_list:
if i == 'F':
if tmp_list:
new_list.append(tmp_list)
tmp_list = []
continue
tmp_list.append(i)
print(new_list)
請注意,這假定應該忽略空列表(連續的F),但這很容易刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.