Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除列表中数字的倍数:_Python_Python 3.x - Fatal编程技术网

Python 删除列表中数字的倍数:

Python 删除列表中数字的倍数:,python,python-3.x,Python,Python 3.x,我有一个数字2,我有这个列表,我如何从列表中删除数字2的倍数并更新它 10 [2, 3, 4, 5, 6, 7, 8, 9, 10] 2 假设您有一个列表l和一个数字n,您可以通过列表理解从l中删除所有倍数的n: l = [i for i in l if i%n] 如果i%n写入,这里与如果i%n写入相同0,和n除以iiffi%n==0方法: 使用发电机 首先想到的选择之一是使用发电机。生成器将遍历一个序列,并测试当前元素是否可被n整除。这也使您能够获得更通用的解决方案: def filte

我有一个数字2,我有这个列表,我如何从列表中删除数字2的倍数并更新它

10 [2, 3, 4, 5, 6, 7, 8, 9, 10] 2

假设您有一个列表
l
和一个数字
n
,您可以通过列表理解从
l
中删除所有倍数的
n

l = [i for i in l if i%n]
如果i%n写入
,这里与如果i%n写入
相同0
,和
n
除以
i
iff
i%n==0

方法: 使用发电机

首先想到的选择之一是使用发电机。生成器将遍历一个序列,并测试当前元素是否可被
n
整除。这也使您能够获得更通用的解决方案:

def filter_by_multiple(seq, n):
    for i in seq:
        if i % n:
            yield i
用法:

>>> filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2)
<generator object filter_by_multiple at 0x000000374ED30258>
>>> list(filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(el for el in l if el % 2)
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(filter(lambda x: x % 2, l))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [el for el in l if el % 2]
[3, 5, 7, 9]
>>>
使用
过滤器()

在Python中的许多内置函数中,有一个用于筛选列表的函数称为
filter()
。通常使用
filter()
的方法是传入要用于筛选列表的函数,然后传入要筛选的实际列表。在您的情况下,您希望过滤掉不是两个倍数的每个元素:

用法:

>>> filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2)
<generator object filter_by_multiple at 0x000000374ED30258>
>>> list(filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(el for el in l if el % 2)
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(filter(lambda x: x % 2, l))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [el for el in l if el % 2]
[3, 5, 7, 9]
>>>
使用列表理解

虽然以上所有这些都是筛选列表的好方法,但最明显、最规范的方法可能是使用列表理解。在你的例子中,你的列表理解非常简单

用法:

>>> filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2)
<generator object filter_by_multiple at 0x000000374ED30258>
>>> list(filter_by_multiple([2, 3, 4, 5, 6, 7, 8, 9, 10], 2))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(el for el in l if el % 2)
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(filter(lambda x: x % 2, l))
[3, 5, 7, 9]
>>> 
>>> l = [2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [el for el in l if el % 2]
[3, 5, 7, 9]
>>>

你想只删除第二次发生,重要的是顺序吗?你是否有可能实现埃拉托色尼的筛选器?是的,我目前正在尝试实现ErasoStESE的筛选器,就像在< <代码>循环中的任何其他<代码>中一样,在列表理解中,你逐一考虑迭代的元素。在本例中,我使用
I
访问列表中的各个元素。在这里阅读更多:这更有意义。谢谢你的支持help@DarrienNguyen我的荣幸。如果您想知道使用哪种方法,我建议使用生成器表达式。希望在本周结束之前,我可以为每种方法发布几次。我使用了列表理解,它似乎给了我我想要的结果wanted@DarrienNguyen好吧,这是一个很好的选择,只要用你最容易理解的方法。