-1

誰かが私にこれを説明できますか? 私は実際に回文数の生成に取り組んでいましたが、これが機能しないことがわかりました:

>>> [ 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']

私の理解では、生成リストの要素はstringであり、type()それも確認されています。

>>> type([ str(x) for x in xrange(10,20)][2])
<type 'str'>

では、なぜx == x[::-1]機能しないのですか?ここで何が欠けていますか?どんなポインタでも大歓迎です。乾杯!!

4

2 に答える 2

4

str(x) はフィルタリング後に発生しますが、適用したフィルターは x にあり、これは整数です。

于 2013-08-16T14:51:22.267 に答える
1

xint オブジェクトです:

>>> [str(x) for x in xrange(10,20) if isinstance(x, int)]
['10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
>>> [str(x) for x in xrange(10,20) if isinstance(x, str)]
[]

>>> [str(x) for x in xrange(10,20) if str(x) == str(x)[::-1]]
['11']
于 2013-08-16T14:50:44.370 に答える