簡體   English   中英

在Python中拆分列表元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM