我有一个嵌套列表,我正试图将其拆分为嵌套在原始列表中的较小的列表。我要用一个特定的元素来划分列表。我已经知道了这个部分,但是当我试图迭代原始列表时,却只返回了最后一个列表。
animals = [["animal", "cat", "dog", "bird", "animal", "cat", "snake", "bird"],
["animal", "cat", "iguana", "bird", "animal", "lizard", "dog", "bird"]]
for n in animals:
it = iter(n)
combined = [[next(it)]]
for ele in it:
if ele != "animal":
combined[-1].append(ele)
else:
combined.append([ele])
print combined输出:
[例][“动物”,“猫”,“蜥蜴”,“鸟”,“动物”,“蜥蜴”,“狗”,“鸟”)
期望产出:
[“动物”、“猫”、“狗”、“鸟”、“动物”、“猫”、“蛇”、“鸟”、“动物”、“猫”、“蜥蜴”、“鸟”、“动物”、“蜥蜴”、“狗”、“鸟”)
发布于 2020-12-26 13:38:07
试试这个丙酮溶液:
str_ = ' '.join([a for animal in animals for a in animal])
list_of_animals = [['animal']+st.split() for st in str_.split("animal") if len(st)>1]它提供了所需的输出。
发布于 2020-12-26 13:35:49
animals = [["animal", "cat", "dog", "bird", "animal", "cat", "snake", "bird"], ["animal", "cat", "iguana", "bird", "animal", "lizard", "dog", "bird"]]
result = []
for row in animals:
result_row = []
for element in row:
if element == "animal":
if result_row:
result.append(result_row)
result_row = []
result_row.append(element)
result.append(result_row)
print(result)发布于 2020-12-26 13:48:59
由于animals的结构可能是不规则的,这可能是一个解决方案:
from itertools import groupby
combined = [
['animal'] + list(group)
for sublist in animals
for key, group in groupby(sublist, key=lambda s: s == 'animal') if not key
]输出:
[['animal', 'cat', 'dog', 'bird'],
['animal', 'cat', 'snake', 'bird'],
['animal', 'cat', 'iguana', 'bird'],
['animal', 'lizard', 'dog', 'bird']]https://stackoverflow.com/questions/65456839
复制相似问题