我对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检查这一点,但我不知道如何实现它。
发布于 2017-07-02 17:59:24
您可以分两步完成此操作:
另外,如果您想在用户输入中拆分逗号,则需要显式地告诉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]
>>>
发布于 2017-07-02 17:50:28
首先,需要将所有字符串项转换为整数。您可以使用map
高效地完成这一任务。在此之后,您所需要做的就是去掉奇数。
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]
发布于 2017-07-02 17:50:15
如果指定为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
时,要将%2==0
转换为%2==0
。
https://stackoverflow.com/questions/44876704
复制