8

Pythonの勉強を始めた初心者です。Pythonのfor文ではinの後ろにはiterableオブジェクトを書けとの説明があります。しかしiterableではないset型がinの後ろに書けてしまいます。またfrozensetを生成するfrozen関数も引数はiterableとなっているのにset型でも生成できてしまいます。どのように考えたらよいのでしょうか。

tori
  • 81
  • 2

1 Answers1

7

set型、及びfrozenset型はiterableです。以下のコードでTrueを表示するようなオブジェクトはiterableであるといえます。

s = set()
try:
    iterator = iter(s)
    print(True)
except TypeError as e:
    print(False)

iterable について 用語集 — Python 3.7.2 ドキュメント
iterについて 組み込み関数 — Python 3.7.2 ドキュメント

PicoSushi
  • 4,944
  • 1
  • 9
  • 28
  • 素早いご回答ありがとうございます。setはシーケンス型ではないがイテラブルなのですね。setがイテラブルの例に出てこないので、イテラブルではないと思ってしまいました。 – tori Mar 01 '19 at 08:54