Saya memiliki list
nama file dengan python dan saya ingin membuat set
semua nama file.
filelist=[]
for filename in filelist:
set(filename)
Ini sepertinya tidak berhasil. Bagaimana ini bisa dilakukan?
Jika Anda memiliki daftar objek hashable (nama file mungkin adalah string, jadi mereka harus menghitung):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
Anda dapat membangun set secara langsung:
s = set(lst)
Bahkan, set
akan bekerja seperti ini dengan objek yang dapat diubah! (Bukankah mengetik bebek bagus?)
Jika Anda ingin melakukannya berulang-ulang:
s = set()
for item in iterable:
s.add(item)
Tetapi jarang ada kebutuhan untuk melakukannya dengan cara ini. Saya hanya menyebutkannya karena set.add
metode ini cukup berguna.
y = set(x)
Solusi paling langsung adalah ini:
Masalah dalam kode asli Anda adalah bahwa nilai tidak ditugaskan ke set . Inilah versi kode Anda yang diperbaiki:
sumber
Anda dapat melakukan
atau, untuk Python 3,
untuk membuat satu set dari daftar. Sebaliknya, Anda juga bisa melakukannya
atau, untuk Python 3,
untuk membuat daftar dari suatu set.
Perhatikan bahwa urutan elemen dalam daftar umumnya hilang saat mengonversi daftar ke set karena set secara inheren tidak terurut. (Satu pengecualian dalam CPython, meskipun, tampaknya jika daftar hanya terdiri dari bilangan bulat non-negatif, tapi saya menganggap ini adalah konsekuensi dari implementasi set di CPython dan bahwa perilaku ini dapat bervariasi antara implementasi Python yang berbeda.)
sumber
Ini solusi lain:
Dalam kode ini saya telah menggunakan metode set untuk mengubahnya menjadi set dan kemudian menghapus semua nilai duplikat dari daftar
sumber
Salah satu cara umum untuk membangun set secara iteratif seperti ini:
sumber
Sederhananya:
sumber