我在Python中有一个list
文件名,我想在所有的文件名中构建一个set
。如何在python中构造一个列表项的列表?
filelist=[]
for filename in filelist:
set(filename)
这似乎并没有工作。如何做到这一点?
我在Python中有一个list
文件名,我想在所有的文件名中构建一个set
。如何在python中构造一个列表项的列表?
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
方法非常有用。
最直接的解决办法是这样的:
s = set(filelist)
在原始代码的问题是,这些值没有被分配到设置。这里是你的代码的固定式版本:
s = set()
for filename in filelist:
s.add(filename)
print(s)
这里是另一种解决方案:
>>>list1=["C:\\","D:\\","E:\\","C:\\"]
>>>set1=set(list1)
>>>set1
set(['E:\\', 'D:\\', 'C:\\'])
在这段代码中我使用了一套方法,以便把它变成一组,然后将其删除列表中的所有重复值
你可以做
my_set = set(my_list)
,或者为Python 3,
my_set = {*my_list}
从列表创建集合。反之,你也可以做
my_list = list(my_set)
,或者为Python 3,
my_list = [*my_set]
创建从一组列表。
请注意,将列表转换为集合时,列表中元素的顺序通常会丢失,因为集合本身无序。 (但是,CPython中的一个例外似乎是,如果列表仅包含非负整数,但我认为这是在CPython中实现集合的结果,并且此行为在不同Python实现之间可能会有所不同。)
我正在使用2.7,这似乎不起作用。这里发生了什么? Python 2.7。13(default,2017年7月24日14:22:59) darwin [GCC 4.2.1 Compatible Apple LLVM 8.1.0(clang-802.0.42)]键入“help”,“copyright”,“credits”或“许可”了解更多信息。 >>> x = [1,2,3] >>> set(x) set([1,2,3]) >>> – user1902291
@ user1902291--它看起来很有效,跟踪结果集:'y = set(x)' – mgilson