从数字列表中的字符串中删除num

时间:2017-10-04 18:02:05

标签: python-3.x

例如:

print("1.", get_list_nums_without_9([589775, 677017, 34439, 48731548,     782295632, 181967909]))
print("2.", get_list_nums_without_9([6162, 29657355, 5485406, 422862350, 74452, 480506, 2881]))
print("3.", get_list_nums_without_9([292069010, 73980, 8980155, 921545108, 75841309, 6899644])) 
print("4.", get_list_nums_without_9([]))

nums = [292069010, 73980, 8980155, 21545108, 7584130, 688644, 644908219, 44281, 3259, 8527361, 2816279, 985462264, 904259, 3869, 609436333, 36915, 83705, 405576, 4333000, 79386997]
print("5.", get_list_nums_without_9(nums))

我试图获得没有9的数字列表。如果列表为空或者列表中的所有数字都包含数字9,则该函数应返回一个空列表。我尝试了下面的功能,它不起作用。

def get_list_nums_without_9(a_list):
    j=0
    for i in a_list:
    a_list[j]=i.rstrip(9)
    j+=1
    return a_list

预期:

1. [677017, 48731548]
2. [6162, 5485406, 422862350, 74452, 480506, 2881]
3. []
4. []
5. [21545108, 7584130, 688644, 44281, 8527361, 83705, 405576, 4333000]

2 个答案:

答案 0 :(得分:3)

您的列表包含整数。要删除包含9的最佳方法,请测试9是否属于数字为字符串,并使用带有条件的列表推导重建输出。

(此外,rstrip删除了字符串的尾随字符。对于您的问题,根本不适合

def get_list_nums_without_9(a_list):
    return [x for x in a_list if "9" not in str(x)]

使用您的数据进行测试:

>>> numbers = [
...    [589775, 677017, 34439, 48731548, 782295632, 181967909],
...    [6162, 29657355, 5485406, 422862350, 74452, 480506, 2881],
...    [292069010, 73980, 8980155, 921545108, 75841309, 6899644],
...    [],
...    [292069010, 73980, 8980155, 21545108, 7584130, 688644, 644908219, 
...     44281, 3259, 8527361, 2816279, 985462264, 904259, 3869, 609436333, 
...     36915, 83705, 405576, 4333000, 79386997]
... ]

>>> for i, l in enumerate(numbers, 1):
...    print("{}. {}".format(i, get_list_nums_without_9(l)))
1. [677017, 48731548]
2. [6162, 5485406, 422862350, 74452, 480506, 2881]
3. []
4. []
5. [21545108, 7584130, 688644, 44281, 8527361, 83705, 405576, 4333000]

答案 1 :(得分:1)

您不想替换列表中的任何内容,您希望根据您在旧列表中检测到的内容生成新列表:

def get_list_nums_without_9(numbers):
    sans_9 = []

    for number in numbers:
        if '9' not in str(number):
            sans_9.append(number)

    return sans_9

如果没有有效数字,这将为您提供一个空列表。