在Python中如何选择满足某些条件的列表元素对?

2024-04-25 02:05:52 发布

您现在位置:Python中文网/ 问答频道 /正文

给出一个列表,如何选择满足某些条件的元素对? 我知道线性搜索算法可以实现这一点:

b = []
for i in range(len(a)-1):
    for j in range(i+1,len(a)):
        if isTrue(a[i],a[j]):
            b.append([a[i],a[j]])

有没有更好的解决方案能更有效地做到这一点?你知道吗

更新

@scytale的评论启发了我一个解决方案。但它不可能是完美的。你知道吗

例如,a=[1.2,3.1,0.3,4.2,5.6,2.7,1.1]。我想得到一对元素,它们的和小于3。你知道吗

b = [(x,y) for x in a for y in a if (x+y)<3 and x!=y]

这将产生两对:

[(1.2,0.3),(1.2,1.1),(0.3,1.2),(0.3,1.1),(1.1,1.2),(1.1,0.3)]

但我想要的是:

[(1.2,0.3),(1.2,1.1),(0.3,1.1)]

Tags: in元素列表forlenif评论range
1条回答
网友
1楼 · 发布于 2024-04-25 02:05:52

使用combinationsfilter怎么样?你知道吗

from itertools import combinations

c = combinations(a, 2)
f = filter(lambda x, y: isTrue(x, y), c)

或使用列表理解:

result = [(x, y) for x, y in c if isTrue(x, y)]

相关问题 更多 >