pythonの初心者です。
今回は以下のコードにおけるzip()のがどういった機能で利用されているかわからないので、質問させていただきます。以下のコードは参考サイトより引用させていただきます。
from janome.tokenizer import Tokenizer import collections t = Tokenizer() s = '人民の人民による人民のための政治' c = collections.Counter(t.tokenize(s, wakati=True)) mc = c.most_common() # [('人民', 3), ('の', 3), ('による', 1), ('ため', 1), ('政治', 1)] words, counts = zip(*c.most_common()) print(words) # ('人民', 'の', 'による', 'ため', '政治') print(counts) # (3, 3, 1, 1, 1)
上記のコードのmc = c.most_common()によりword,numのタプルのリストができました。
それをwords, countsに代入することで,
タプルの要素を別々に表示できるという主旨のコードです。
疑問点
zip()というのはことなる2つのリストを引数としていれることで、そのリストの順番が同じものをタプルのセットとして返してくれると解釈しています。
なので、mcは一つのリストなのでzipをなぜ使うのかよくわかりません。
たぶん*が関係しているのではと思ったので、*を消してみると
too many values to unpack (expected 2)
というエラーがでました。
アンパックというのを調べるとそれは変数にアスタリスクをつけると、変数に対して代入する要素が多かった場合に、アスタリスクのついた変数にすべてタプルとして代入されるというものでした。
あくまで、変数にアスタリスクをつける処理であって、zip(*)については言及されておらず、解決しなかったので、質問させていただきます。
回答いただけると幸いです。
mac 10.14.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/05 10:05