gpt4 book ai didi

python - 将一个以小写字母开头的元素连接到列表的前一个元素

转载 作者:行者123 更新时间:2023-12-04 10:15:05 25 4
gpt4 key购买 nike

Stackoverflow,你好

我现在有一个特定的任务。它涉及将元素合并到列表中并检查小写字母。

所以,我有一个分层列表,里面有列表:

ingridient_names_final=[['Egg', 'Milk', 'Tomato'], ['Duck', 'Water', 'Honey', 'Soy', 'sauce'], ['Potato', 'Garlic', 'Gouda', 'cheese'], ['Beef', 'Sweet', 'pepper', 'Pita', 'bread', 'Wine', 'vinegar', 'Tomato']]

应该转换为:
[['Egg', 'Milk', 'Tomato'], ['Duck', 'Water', 'Honey', 'Soy sauce'], ['Potato', 'Garlic', 'Gouda cheese'], ['Beef', 'Sweet pepper', 'Pita bread', 'Wine vinegar', 'Tomato']]

因此,我需要将单词“sause”、“cheese”、“pepper”、“bread”和“vinegar”加入到列表的前一个元素中。

我只理解那个方法 islower()应该在这里使用:
for element in ingridient_names_final:
# print (element)
for element2 in element:
# print (element2)
if element2.islower():
print(element2)

结果是:
sauce
cheese
pepper
bread
vinegar

但是如何将它们加入原始列表中每个小列表的前一个元素?我是这门语言的初学者,请帮忙)

最佳答案

您可以使用 itertools.groupby 执行以下操作:

from itertools import groupby

for lst in ingridient_names_final:
new_lst = []
for k, g in groupby(lst, key=lambda s: s[0].islower()):
if k:
new_lst[-1] += ' ' + ' '.join(g)
else:
new_lst.extend(g)
lst[:] = new_lst

或者更简单:
for lst in ingridient_names_final:
new_lst = []
for s in lst:
if s[0].islower():
new_lst[-1] += ' ' + s
else:
new_lst.append(s)
lst[:] = new_lst

关于python - 将一个以小写字母开头的元素连接到列表的前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61103399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com