![](/img/trans.png)
[英]convert pandas dataframe to list of tuple with unique pairs of integers as the first entry
[英]Tuple of Pairs from List of Integers
我正在尝试从整数列表创建元组对列表。 元组对列表将包含在列表中找到的数字对。 下面的例子:
listofint = [4, 3, 1, 2, 3, 1, 1, 3, 5, 1, 2, 2]
listoftuplepairs = [(3,3),(1,1),(2,2),(1,1)]
我很困惑如何使用列表理解来实现这一点。 我在下面试过这个,但它只返回一个空字符串。
listoftuplepairs = [(i,listofint.remove(i)) for i in listofint if listofint.remove(i) == i]
我知道在列表上使用remove()
不会返回任何内容。 我已经尝试过pop()
但我只能将列表索引作为参数传递给它,而不是我想要pop()
并存储在我的元组列表中的实际值。
有没有其他方法可以通过列表理解来做到这一点?
您可以使用Counter
尝试此操作
Counter
用于计算可散列对象的出现次数。
from collections import Counter
l=[4, 3, 1, 2, 3, 1, 1, 3, 5, 1, 2, 2]
c=Counter(l)
# Counter({4: 1, 3: 3, 1: 4, 2: 3, 5: 1})
[(k,k) for k,v in c.items() for _ in range(v//2)]
# [(3, 3), (1, 1), (1, 1), (2, 2)]
因此,这里的键k
是数字,值v
是它在列表中出现的次数。 由于您希望对获得对的数量,因此我做了v//2
。 单行列表理解中的上述方法是
[(k,k) for k,v in Counter(l).items() for _ in range(v//2)]
使用dict.fromkeys
。 只是模仿Counter
在这里所做的。
c=dict.fromkeys(l,0)
for k in l:
c[k]+=1
[(k,k) for k,v in c.items() for _ in range(v//2)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.