繁体   English   中英

使用列表理解无法执行比较我该如何解决

[英]using list comprehension not able to perform comparison how can i fix it

在列表理解中,使用if以获取所需的结果,但出现错误。我无法将变量从char类型转换为整数。

尝试此代码效果很好

list1=[int(x) for x in input().split()]
list2=[x for x in list1 if x<5 ]
print(list2)

但是,只用一行就可以完成

list1=[int(x) for x in input().split() if x<5]

要么

list1=[x for int(x) in input().split() if x<5]

不起作用

list1应该打印所有小于5的值。

用户输入示例:2 5 6 8

print(list1)

应该给出结果[2,5]

问题在于您正在比较拆分的字符串和整数(5)。 在使用if语句检查之前,尝试转换为int类型。 现在两者都应该工作。 另外,正如@prashantrana指出的那样,鉴于您的输出,看来您需要<=5而不是<5

如果您想要一个字符串列表,请使用

list1=[x for x in input().split() if int(x)<=5]

如果需要整数列表,请使用

list1=[int(x) for x in input().split() if int(x)<=5]

如果在int转换之前评估if。 因此,您尝试将5与字符串进行比较。 预期的修补程序可以在其他答案中找到。 这是另一种选择。

因为可以

s = '2 5 6 8'
i = list(filter(lambda i: i<=5, map(int, s.split())))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM