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?
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?
Jawaban:
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:
s = set(filelist)
Masalah dalam kode asli Anda adalah bahwa nilai tidak ditugaskan ke set . Inilah versi kode Anda yang diperbaiki:
s = set()
for filename in filelist:
s.add(filename)
print(s)
Anda dapat melakukan
my_set = set(my_list)
atau, untuk Python 3,
my_set = {*my_list}
untuk membuat satu set dari daftar. Sebaliknya, Anda juga bisa melakukannya
my_list = list(my_set)
atau, untuk Python 3,
my_list = [*my_set]
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.)