У меня есть list
имя файла в Python, и я хотел бы создать set
из всех имен файлов.
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)
Наиболее прямым решением является следующее:
Проблема в исходном коде заключается в том, что значения не были назначены набору . Вот исправленная версия вашего кода:
источник
Ты можешь сделать
или, для Python 3,
создать набор из списка. И наоборот, вы также можете сделать
или, для Python 3,
создать список из набора.
Просто отметьте, что порядок элементов в списке обычно теряется при преобразовании списка в набор, поскольку набор по своей природе неупорядочен. (Тем не менее, одно исключение в CPython, по-видимому, состоит в том, что список состоит только из неотрицательных целых чисел, но я предполагаю, что это является следствием реализации множеств в CPython и что это поведение может различаться в разных реализациях Python.)
источник
Вот еще одно решение:
В этом коде я использовал метод set, чтобы превратить его в набор, а затем он удалил все повторяющиеся значения из списка
источник
Один общий способ построить множество итеративным способом, как это:
источник
Проще говоря строку:
источник