Python 3.x:如何从用户输入列表中提取偶数?

时间:2017-07-03 01:42:20

标签: python list python-3.x

我是Python的新手,我正在尝试创建代码,这些代码只会从用户输入的列表中返回偶数。

我早就创建了这个:

nums = input('Enter a sequence of numbers separated by commas: ')
lst = str.split(nums)
print(lst)

这将返回用户给出的内容,但逗号仍将在结果中。例如,如果我输入:5,6,7;它会以['5,','6,','7']的形式出现。除此之外,我想只显示偶数。我知道我必须使用%2 == 0检查这个,但我不知道如何实现它。

5 个答案:

答案 0 :(得分:4)

首先,您需要将所有字符串项转换为整数。您可以使用map有效地执行此操作。在那之后,您需要做的只是filter奇数。

filter(lambda x: x % 2 == 0, map(int, str.split(nums, ',')))

如果您使用的是python3,请将输出转换为包含list()的列表。

演示:

>>> string = '2,5,8,12,5,6,7'
>>> list(filter(lambda x: x % 2 == 0, map(int, str.split(string, ','))))
[2, 8, 12, 6]

答案 1 :(得分:2)

您可以分两步完成此操作:

  1. 首先将列表中的每个项目转换为整数。
  2. 接下来,使用列表推导从列表中提取偶数
  3. 作为旁注,如果您想在用户输入中拆分逗号,则需要明确告诉str.split()

    >>> nums = input('Enter a sequence of numbers separated by commas: ')
    Enter a sequence of numbers separated by commas: 1,2,3,4,5,6
    >>> # Step 1
    >>> lst = [int(n) for n in nums.split(',')]
    >>> lst
    [1, 2, 3, 4, 5, 6]
    >>> # Step 2
    >>> [n for n in lst if n % 2 == 0]
    [2, 4, 6]
    >>>
    

答案 2 :(得分:0)

如果指定要用逗号分隔split(),可以使用列表理解做一些事情,如YiFei所述:

nums = input('Enter a sequence of numbers separated by commas: ')
lst = str.split(nums,',')
print([n for n in lst if (int(n)%2) == 0])

这给出了:

Enter a sequence of numbers separated by commas: 2,5,8,10
['2', '8', '10']

注意在检查n时将int转换为%2==0

答案 3 :(得分:0)

这是因为默认情况下,拆分操作会将空格视为分隔符。 要解决这个问题,我们需要nums.split(“,”)这里的nums已经是一个字符串。 但即使这样,你也会得到白色空间来摆脱它,你需要在分割它们之前替换字符串中的所有空格。 为此,你必须使用nums.replace(“”,“”) 然后你必须将结果列表中的每个元素解析为一个整数,然后查看它是否为偶数然后将其附加到列表中

答案 4 :(得分:0)

使用int(字符串编号)将用户输入转换为整数。

由于您使用列表来存储您的号码,您可以循环浏览列表并检查每个元素是否均匀。

nums.split(',')是正确的语法