如何删除列表中包含其中某些数字的数字

时间:2015-01-01 01:43:45

标签: python-2.7

这是我的代码:

def second_test(numbers):
    for x in numbers:
        if 1 in x:
            numbers.remove(x)
        elif 7 in x:
            numbers.remove(x)
    print numbers

second_test(numbers)

Numbers是一个包含 10 1000 的int值的列表。我试图删除此范围内包含1或7的数字。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您必须检查该数字的任何数字是否为1或7.有两种方法可以执行此操作:

第一种方法:继续将数字除以10并检查余数(这是用模数运算符完成的),直到数字变为0

def check_num(n):
    while n:
        if n%10 == 1 or n%10 == 7:
            return True
        n /= 10
    return False


def second_test(numbers):
    to_delete = []
    for i,x in enumerate(numbers):
        if check_num(x):
            to_delete.append(i)
    for d in to_delete[::-1]:
        del numbers[d]

第二种方式:将数字转换为字符串,并检查字符串的每个字符

def check_num(n):
    for char in str(n):
        if char=='1' or char=='7':
            return True
    return False

def second_test(numbers):
    to_delete = []
    for i,x in enumerate(numbers):
        if check_num(x):
            to_delete.append(i)
    for d in to_delete[::-1]:
        del numbers[d]