如何知道一个数字是否在另一个数字python中

时间:2014-03-18 15:58:26

标签: python numbers

我有一个清单:

numbers = [12, 23, 26, 54]

我需要知道每对数字是否至少有1位数。例如,12具有数字12,因此应该包括对(12,23),因为它们都具有数字2。我想要返回对的列表。例如

>>> numbers = [12, 23, 26, 54]
>>> function(numbers)
[(12, 23), (12, 26), (23, 12), (23, 26), (26, 12), (26, 23)]

到目前为止,这是我的代码

pari_his=([12, 23, 26, 54])
par=set()
parus=[]
b=list()
c=list()
resitev=list()
for i in pari_his:
    i=str(i)
    for e,j in enumerate(i):
        if e%2==0:
            b.append(j)
        else:               
            c.append(j)
print(b,c)
for ena, dva in zip(b, c):
    kuku=(ena,dva)              
    parus.append(tuple(kuku))
print(parus)
for juj in parus:
    print(juj[0],juj[1])

1 个答案:

答案 0 :(得分:1)

使用itertools.product获取元组(您必须两次过滤掉相同的数字),然后使用数字的set个交叉点来查看它们是否有任何共同的数字。

import itertools
numbers = [12, 23, 26, 54]
[t for t in itertools.product(numbers, numbers) if set(str(t[0])) & set(str(t[1])) and t[0] != t[1]]

[(12, 23), (12, 26), (23, 12), (23, 26), (26, 12), (26, 23)]

没有itertools你可以自己构建元组。

numbers = [12, 23, 26, 54]
[(i, j) for i in numbers for j in numbers if set(str(i)) & set(str(j)) and i != j]

[(12, 23), (12, 26), (23, 12), (23, 26), (26, 12), (26, 23)]