gpt4 book ai didi

python - 通过集合列表的嵌套循环

转载 作者:行者123 更新时间:2023-12-01 04:13:23 25 4
gpt4 key购买 nike

我最近读到,执行以下操作并不是一个好的做法:

for i in xrange(len(string-or-list)):
#do something with string-or-list[i]

我明白了。但说到嵌套循环,我就不这么认为了。

考虑一个集合h的列表。我想消除所有作为其他集合的子集的集合。这就是我所做的:

for x in xrange(len(h)-1,-1,-1):
for y in xrange(x):
if h[x] <= h[y]: h[x] = set()
elif h[x] > h[y]: h[y], h[x] = h[x], set()
return filter(None, h)

我能做些什么来让它更加Pythonic?我虽然考虑使用 reversedenumerate,但我不知道如何停止对 x 之前元素的第二个循环。或者我应该以不同的方式做整件事?

更新

我通过将集合列表变成一组元组来解决这个问题,然后我应用

    return [list(s) for s in h if sum(1 for o in h if set(s) <= set(o)) <= 1]

最佳答案

最Pythonic的事情是用你想要的集合组成一个新列表。要删除重复项,我们需要一个辅助函数..

def uniq(seq):
memo = []
for i in seq:
if i not in memo:
memo.append(i)
yield i

然后我们就可以做我们想做的事情了

return [s for s in uniq(h) if not any(s < o for o in h)]

关于python - 通过集合列表的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620123/

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