私はlist
Pythonでファイル名を持っているset
ので、すべてのファイル名からout を構築したいと思います。
filelist=[]
for filename in filelist:
set(filename)
これは機能していないようです。どうすればできますか?
私はlist
Pythonでファイル名を持っているset
ので、すべてのファイル名からout を構築したいと思います。
filelist=[]
for filename in filelist:
set(filename)
これは機能していないようです。どうすればできますか?
回答:
ハッシュ可能なオブジェクトのリストがある場合(ファイル名はおそらく文字列であるため、カウントする必要があります):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
セットを直接作成できます:
s = set(lst)
実際、イテラブルオブジェクトでset
このように動作します! (ダックタイピングは素晴らしいことではないですか?)
繰り返し実行したい場合:
s = set()
for item in iterable:
s.add(item)
ただし、この方法で実行する必要はほとんどありません。このset.add
方法は非常に便利なので、私はそれについてのみ述べます。
y = set(x)
最も直接的な解決策はこれです:
s = set(filelist)
元のコードの問題は、値がセットに割り当てられていなかったことです。これが修正されたバージョンのコードです。
s = set()
for filename in filelist:
s.add(filename)
print(s)
できるよ
my_set = set(my_list)
または、Python 3の場合
my_set = {*my_list}
リストからセットを作成します。逆に、あなたも行うことができます
my_list = list(my_set)
または、Python 3の場合
my_list = [*my_set]
セットからリストを作成します。
セットは本質的に順序付けられていないため、リストをセットに変換すると、リスト内の要素の順序は通常失われます。(ただし、CPythonの1つの例外は、リストが負でない整数のみで構成されている場合ですが、これはCPythonでのセットの実装の結果であり、この動作は異なるPython実装間で異なる可能性があると思います。)