How to construct a set out of list items in python?

前端 未结 6 1916
无人共我
无人共我 2020-11-27 12:25

I have a list of filenames in python and I would want to construct a set out of all the filenames.

filelist=[]
for filename in file         


        
相关标签:
6条回答
  • 2020-11-27 12:34

    The most direct solution is this:

    s = set(filelist)
    

    The issue in your original code is that the values weren't being assigned to the set. Here's the fixed-up version of your code:

    s = set()
    for filename in filelist:
        s.add(filename)
    print(s)
    
    0 讨论(0)
  • 2020-11-27 12:36

    One general way to construct set in iterative way like this:

    aset = {e for e in alist}
    
    0 讨论(0)
  • 2020-11-27 12:42

    If you have a list of hashable objects (filenames would probably be strings, so they should count):

    lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
    

    you can construct the set directly:

    s = set(lst)
    

    In fact, set will work this way with any iterable object! (Isn't duck typing great?)


    If you want to do it iteratively:

    s = set()
    for item in iterable:
        s.add(item)
    

    But there's rarely a need to do it this way. I only mention it because the set.add method is quite useful.

    0 讨论(0)
  • 2020-11-27 12:46

    Here is another solution:

    >>>list1=["C:\\","D:\\","E:\\","C:\\"]
    >>>set1=set(list1)
    >>>set1
    set(['E:\\', 'D:\\', 'C:\\'])
    

    In this code I have used the set method in order to turn it into a set and then it removed all duplicate values from the list

    0 讨论(0)
  • 2020-11-27 12:50

    Simply put the line:

    new_list = set(your_list)
    
    0 讨论(0)
  • 2020-11-27 12:55

    You can do

    my_set = set(my_list)
    

    or, in Python 3,

    my_set = {*my_list}
    

    to create a set from a list. Conversely, you can also do

    my_list = list(my_set)
    

    or, in Python 3,

    my_list = [*my_set]
    

    to create a list from a set.

    Just note that the order of the elements in a list is generally lost when converting the list to a set since a set is inherently unordered. (One exception in CPython, though, seems to be if the list consists only of non-negative integers, but I assume this is a consequence of the implementation of sets in CPython and that this behavior can vary between different Python implementations.)

    0 讨论(0)
提交回复
热议问题