PythonでTypeError: 'list' object is not callableと怒られる

scienceportal.jst.go.jp

⇧ amazing...

PythonでTypeError: 'list' object is not callableと怒られる

以下の書籍を写経していて、


独学コンピューターサイエンティスト Pythonで学ぶアルゴリズムとデータ構造

print(list(zip(movie_list, ratings_list)))    

⇧ って記述で、『TypeError: 'list' object is not callable』って怒られる。

stackoverflowさんで解決策が載ってました。

stackoverflow.com

ハッキリとした回答は無いのだけど、おそらくデータ型が異なるリスト同士の統合については、

print(tuple(zip(movie_list, ratings_list)))    

⇧ listじやなくて、tupleを使えってことらしい。

ちなみに、書籍で使ってるリストは、

movie_list = ["インターステラー", "インセプション", "プレステージ", "インソムニア", "バットマン ビギンズ"]
ratings_list = [1, 10, 10, 8, 6]

⇧ ってな感じで、データ型が異なってますと。

Python動的に型付けされていて、ガベージコレクションされている。構造化(特に手続き型)、オブジェクト指向関数型プログラミングを含む複数のプログラミングパラダイムをサポートしている。Pythonは、その包括的な標準ライブラリのため、しばしば「バッテリーを含む」言語と表現される。

Python - Wikipedia

⇧ 動的型付け言語って言う割には、データ型で結構エラーにしてくれるPythonさんが扱い辛くて仕方ないんだが...

動作環境としては、Google Colaboratoryを使っていて、

import sys

print(sys.version)    
3.8.15 (default, Oct 12 2022, 19:14:39) 
[GCC 7.5.0]    
import platform

print(platform.python_version())    
3.8.15    

⇧ ってな感じで、Pythonのバージョンは3.8.15ということらしいんだけど、バージョンによってはlistでも動くってことなんかな?

というのも、stackoverflowの中で、

What's error you got? and which Python version you've been running? -In Python3+ this should work fine. Please confirm. 

 May 19 at 0:27 

https://stackoverflow.com/questions/72297343/python-zip-list-problem-typeerror-list-object-is-not-callable

⇧ って言ってる人がおるのよね。

となると、Pythonってバージョンによる互換性を気にしないって方針なのかなというザワザワした気持ちになってしまうじゃないですか...

何か、データ型とか関係なく、listがエラーになる...

list1 = [2, 43, 48, 62, 64, 28, 3]
list2 = [1, 28, 42, 70, 2, 10, 62, 31, 4, 14]
set1 = set(list1)
set2 = set(list2)
list(set1.intersection(set2))    
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-69-0697aafb2af0> in <module>
      3 set1 = set(list1)
      4 set2 = set(list2)
----> 5 list(set1.intersection(set2))

TypeError: 'list' object is not callable  

⇧ 上記もtupleにすれば、エラーは出なくなるけども、listでエラーになる原因が分からん...

list1 = [2, 43, 48, 62, 64, 28, 3]
list2 = [1, 28, 42, 70, 2, 10, 62, 31, 4, 14]
set1 = set(list1)
set2 = set(list2)
tuple(set1.intersection(set2))    
(2, 28, 62)

Python、相変わらずカオスだな...

毎度モヤモヤ感が半端ない...

今回はこのへんで。