gpt4 book ai didi

python - 如何在字符串/整数列表中仅选择整数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:43 27 4
gpt4 key购买 nike

我有一个列表(实际上是一个可迭代的),它是使用 python 的 itertools 库的这个函数创建的:

comb = [c for i in range(len(menu)+1) for c in combinations(menu, i)]

给你一个想法菜单是一个这种格式的列表[[“食物名称”,糖克数]]:

menu = [ ["cheesecake",  13], ["pudding", 24], ["bread", 13], .........]

所以comb本质上是一个包含菜单子(monad)列表所有可能组合的列表。我必须通过梳子迭代创建所有可能的项目组合,其总糖含量将完全等于(不是更少,不是更多,完全)max_sugar = 120

所以我想我可以迭代comb中的每个可能的组合,并使用if语句检查该组合中项目的糖总和是否完全等于max_sugar。如果是这种情况,我想输出此组合中的菜单项的名称。否则我想以这种方式继续进行其他组合:

for e in comb:
for l in e:
if sum(sugars of items in this combination) == max_sugar: # pseudo-code
print items in this combination #pseudo code

我想我遇到的问题是仅访问l中每个项目的糖值并检查条件,如果为TRUE则打印名称。我不精通 python 列表理解,但在过去的几天里我已经进步了很多!

flag = 0
num_comb = 1
comb = [c for i in range(len(menu)+1) for c in combinations(menu, i)]

for e in comb:
if sum(l[1] for l in e) == targetSugar:
print "The combination number " + str(num_comb) + " is:\n"
print([l[0] for l in e])
print "\n\n\n"
num_comb += 1
flag = 1

if flag == 0:
print "there are no combinations of dishes for your sugar intake... Sorry! :D "

最佳答案

正如您所提到的,您可以使用列表理解来迭代所有菜单组合,并限制为那些含有您正在寻找的糖量的餐食:

>>> # input data
>>> menu = [ ["cheesecake", 13], ["pudding", 24], ["bread", 13] ]
>>> max_sugar = 26
>>> # construct all combinations of menu items
>>> comb = [c for i in range(1, len(menu)+1) for c in combinations(menu, i)]
>>> list(comb)
[(['cheesecake', 13],), (['pudding', 24],), (['bread', 13],), (['cheesecake', 13], ['pudding', 24]), (['cheesecake', 13], ['bread', 13]), (['pudding', 24], ['bread', 13]), (['cheesecake', 13], ['pudding', 24], ['bread', 13])]
>>> # restrict to meals with exactly max_sugar
>>> meals = [ e for e in comb if sum( sugar for _, sugar in e) == max_sugar ]
>>> meals
[(['cheesecake', 13], ['bread', 13])]

唯一棘手的部分是,当您迭代每个组合时,每个元素 e 都是一个包含名称和糖数的列表。因此,您可以使用以下方法测量组合e中的糖含量:

sum( sugar for _, sugar in e) == max_sugar

在此基础上,如果您只想返回每顿饭中食物的名称,您可以使用:

>>> [ [name for name, sugar in m] for m in meals ]
[['cheesecake', 'bread']]

关于python - 如何在字符串/整数列表中仅选择整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437511/

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