微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从列表中找到一个公共数字并将其放入另一个列表中

如何解决从列表中找到一个公共数字并将其放入另一个列表中

我有两个列表,它们是通过一个名为 factors函数形成的,该函数返回一个数字的质因数。在我的任务中,我必须将两个列表中的公共数字返回到一个新列表中。

def factors(n):
    i = 2
    prime_factors = []
    while i*i <= n:
        if n%i == 0:
            prime_factors=prime_factors + [i]
            n //= i
        else:
            i += 1
    if n>1:
        prime_factors=prime_factors + [n]
    return prime_factors


>>>factors(4)
>>>[2,2]
>>>factors(14)
>>>[2,7]

我必须找到通用号码并将其返回到一个新列表中。我在下面尝试了我的代码,它给我的结果列表是 [2,2],而它应该只是 [2]

lst=[]
for element in factors(4):
            if element in factors(14):
                lst=lst+[element]

这段代码给我的结果是 [2,2]。请指导我如何才能获得 [2]。此外,我不允许使用 set、intersection 或 zip 等方法或数学库中的内容。另一个例子:

lst1=[2,2,3,4,5,6]
lst2=[2,7,8]

common_lst=[2,4]

解决方法

(注意:这是针对该问题的早期版本,在他们破坏问题以说不允许使用数学“库”并且他们想要保留常见重复项之前。哦,好吧,onEdit 是一个简短的单行,我们可以自己写。)

200

gcd

(它们并不完全相同,它们解决了对模棱两可问题的两种不同解释。我实际上怀疑第一个是所需的,否则 OP 可能不会使 >>> from math import gcd >>> factors(gcd(4,14)) [2] 函数产生重复因子首先。)

,

Counter 库中的 collections 方法在这里会派上用场。 Counter 接受一个列表并返回该列表中每个值的“计数”数量的字典。

from collections import Counter

f4 = factors(4)
f14 = factors(14)

c4 = Counter(f4)
c14 = Counter(f14)

inter = c4 & c14

lst = list(inter.elements())

inter 表示两个字典之间的交集。 list(inter.elements()) 简单地检索字典中的元素作为键和值的组合,并将结果转换为列表。

,

如果我正确理解了这个问题,解决它的唯一方法是删除找到的常用数字。 (为此,我遍历了列表 backwords 以防止索引错误)

lst = []
fctrs_1 = factors(4)
fctrs_2 = factors(14)
for a in range(len(fctrs_1)-1,-1,-1):
    for b in range(len(fctrs_2)-1,-1):
        if fctrs_1[a] == fctrs_2[b]:
            lst.append(fctrs_1[a])
            del fctrs_1[a]
            del fctrs_2[b]
            break # Break to prevent errors 
print(lst)# Output: [2]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?