簡體   English   中英

在轉換列表和字符串時設置減法

[英]Set subtraction while casting lists and string

我有兩個字符串列表。 當我將兩個列表轉換為set()時,減法可以正常工作。

>>> A = ['One', 'Two', 'Three', 'Four']
>>> B = ['One']
>>> print(list(set(A) - set(B)))
['Three', 'Two', 'Four']

但是,當變量B是一個字符串並且我將其轉換為set()時,減法不起作用。

>>> A = ['One', 'Two', 'Three', 'Four']
>>> B = 'One'
>>> print(list(set(A) - set(B)))
['One', 'Two', 'Three', 'Four']

如果它是一個錯誤或預期的行為,有人能解釋我嗎?

這是意料之中的。 它將字符串視為可迭代的,因此創建了一組所有字母。

B = 'One'
set(B)
# {'O', 'e', 'n'}

如果您在A中有字母,您可以清楚地看到它:

A = ['One', 'Two', 'Three', 'Four', 'O', 'o', 'n']
B = 'One'

print(list(set(A) - set(B)))

Output: ['o', 'Two', 'One', 'Four', 'Three']

set() function 在對字符串進行操作時,將生成一組所有字符:

print(set("ABC"))  # set(['A', 'C', 'B'])

如果您想要一個包含單個字符串ABC的集合,那么您需要將包含該字符串的集合傳遞給set()

print(set(["ABC"]))  # set(['ABC'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM