給出一個列表,我如何選擇滿足某些標準的元素對? 我知道一個線性搜索算法可以實現這一點:如何選擇滿足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)]
[在列表綜合雙迭代]的可能重複(http://stackoverflow.com/questions/2522503/advanced-python-list-comprehension) – scytale
隨着我更新,我不能得到不重複的結果... – xibinke
請使用搜索:http://stackoverflow.com/questions/7961363/python-removing-duplicates-in-lists – scytale