3

Pyscripterで次のコードを実行しようとしましたが、「'list'オブジェクトが呼び出せません」というエラーが返され続けます。Pythonシェルを介してコードを実行しましたが、完全に正常に機能しました。Pyscripterで機能しない理由がよくわかりません。また、Python2.7を使用しています。

import itertools
print list(itertools.permutations([1,2,3,4], 2))

Pyscripterで単純なリストを作成しても、同じエラーが返されます。

list()

前もって感謝します!

4

3 に答える 3

11

ほとんどの場合、名前リストをリスト インスタンスに再バインドしました。

>>> import itertools
>>> print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
>>> 
>>> list = [2,3,4]
>>> list(itertools.permutations([1,2,3,4], 2))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

listリストや文字列などを呼び出さないでくださいstr.

于 2012-06-04T18:11:28.573 に答える
5

以前のどこかで、リストを作成して名前を付けましたlist。これは悪い考えです。この名前listはPythonでは特別に扱われません。インタープリターを起動するときにlist、リストタイプに名前を付けますがlist、他listの名前を付けると、名前は一度に1つのものしか参照できないため、リストタイプの名前にすることはできなくなります。

したがって、list()新しいリストを作成することを期待して書く(つまり、リストタイプをインスタンス化する)と、Pythonは常に行うことを実行します。つまり、名前を検索し、その名前を持つものすべてlistに適用()(つまり__call__)しようとします。list現在は他のリストを参照しているため'list' objects are not callable、エラーメッセージに示されているとおり、これは失敗します。

于 2012-06-04T18:14:06.950 に答える
0

Word liststrは Python のキーワードです。そのため、スクリプトにエラーがあります。次のようなものを試すことができます:

import itertools

print(list(itertools.permutations([1,2,3,4], 2)))

List = [1,2,3,4,5,6]
print(list(itertools.permutations(List, 2)))

乾杯!!

于 2016-01-15T14:09:20.740 に答える