任何人都可以解释这个给我吗?我其实是工作的一个产生palindromic numbers,发现这不起作用:处理整数在列表中的奇怪字符串
>>> [ str(x) for x in xrange(10,20) if x == x[::-1] ]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
一点后,运行以下命令:
>>> [ str(x) for x in xrange(10,20) ]
['10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
这实际上是创建与数字作为字符串列表(我才拿到这个错误?),同时,这将返回一个空集:
>>> [ str(x) for x in xrange(10,20) if x == '12' ]
[]
但这并不:
>>> [ str(x) for x in xrange(10,20) if x == 12 ]
['12']
我的理解是在生成列表中的元素是串,type()
确认过:
>>> type([ str(x) for x in xrange(10,20)][2])
<type 'str'>
那么为什么x == x[::-1]
不起作用?我在这里错过了什么?任何指针非常感谢。干杯!!
你似乎缺少一些基础知识。 'str(x)'返回一个'x'的字符串表示,它是一个int。所以,你将一个int与一个字符串进行比较。 – keyser
@Ashwini Chaudhary:这就是回文数字,试着用:'[x for x in xrange(10,50)if str(x)== str(x)[:: - 1]]'你会看到。干杯!! – MacUsers
@Keyser:我确定我错过了一些基础知识,并且我知道“str(x)是x的字符串表示形式”,但是我错误地认为这种比较是在x的字符串表示形式上进行的。埃德加的回答清楚地解释了这一点。干杯!! – MacUsers