任何人都可以解釋這個給我嗎?我其實是工作的一個產生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