这是我的代码:
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的数字。有什么建议吗?
答案 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]