我在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