从列表中删除包含python中某些特定数字的数字

时间:2016-10-16 07:09:56

标签: python list python-2.7 python-3.x filter

鉴于列表:

l = [1,32,523,336,13525]

我有一个数字23作为某个特定功能的输出。

现在,

我想从列表中删除包含2或3或2和3的所有数字。

Output should be:[1]

我想写一些很酷的班轮代码。

请帮忙!

我的方法是:

1。)将int列表转换为字符串列表。

2。)然后使用for循环来检查字符2或字符3,如下所示: A=[x for x in l if "2" not in x](不确定如何在此行中包含3)

3。)使用以下命令将列表转换为整数列表:

B= [int(numeric_string) for numeric_string in A]

这个过程很安静,因为它涉及转换为数字23的字符串以及所有列表的数量。我想立即在整数列表中进行。

2 个答案:

答案 0 :(得分:3)

您可以将数字转换为字符集:

>>> values = [1, 32, 523, 336, 13525]
>>> number = 23
>>> [value for value in values
...  if set(str(number)).isdisjoint(set(str(value)))]
[1]

答案 1 :(得分:0)

您正在寻找filter功能。假设你有一个整数列表,你只想要奇数:

def is_odd(val):
   return val % 2 == 1

filter(is_odd, range(100))

或列表理解

[x for x in range(100) if x % 2 == 1]

特别是列表理解完全是Pythonic。您现在需要的只是一个函数,它可以根据您的特定需求返回一个布尔值。