You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python列表推导式判断字符串长度奇偶报错的原因是什么?

问题分析与解决:列表推导式中的TypeError错误

嘿,这个错误我太熟了!咱们来一步步拆解问题出在哪:

错误根源

你写的判断条件x%2==0里,x是myNames列表中的字符串元素(比如'A'、'BB'这类)。在Python中,当你对字符串使用%运算符时,它的作用是字符串格式化,而不是数学里的取模运算。

举个例子,如果你执行'A'%2,Python会认为你想把数字2插入到字符串的占位符中,但你的字符串里根本没有%d这类格式化占位符,自然就会抛出TypeError: not all arguments converted during string formatting这个报错。

修正方案

你真正要判断的是字符串的长度是否为偶数,所以得先通过len(x)获取字符串的长度,再对2进行取模运算。修正后的代码如下:

myNames = ['A','BB','CCC','DDDD']
myList3 = [ 'even' if len(x)%2==0 else 'nope' for x in myNames]
print(myList3)  # 输出结果:['nope', 'even', 'nope', 'even']

小提示

以后遇到对非数字类型做数学运算的场景,先想想是不是漏了获取它的数值属性(比如长度、转成数字等),别把字符串格式化和数学运算搞混啦~

内容的提问来源于stack exchange,提问作者blockByblock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:48:24