什么不';我不明白Python 2.7中执行和/或操作的顺序吗?

什么不';我不明白Python 2.7中执行和/或操作的顺序吗?,python,execution,Python,Execution,我有一个列表,我正在尝试获取该列表中唯一项的集合或列表。我还需要从列表中删除特定项目的所有实例,在本例中为“USD” currencies = ['AUD', 'AUD', 'CAD', 'CHF', 'EUR', 'GBp', 'GBp', 'HKD', 'JPY', 'KRW', 'NOK', 'SEK', 'TWD', 'USD', 'USD', 'ZAr'] 我最初试过 foreign_currencies = set(currencies).discard('USD') 但是注意到

我有一个列表,我正在尝试获取该列表中唯一项的集合或列表。我还需要从列表中删除特定项目的所有实例,在本例中为
“USD”

currencies = ['AUD', 'AUD', 'CAD', 'CHF', 'EUR', 'GBp', 'GBp', 'HKD', 'JPY', 'KRW', 'NOK', 'SEK', 'TWD', 'USD', 'USD', 'ZAr']
我最初试过

foreign_currencies = set(currencies).discard('USD')
但是注意到函数返回了一个
'NoneType'

为了让它工作,我必须分两步来做

foreign_currencies = set(currencies)
foreign_currencies = foreign_currencies.discard('USD')
有人能告诉我为什么会出现这种情况和/或解释我对执行顺序不理解的地方吗?在第一个示例中,在构造集合之前是否调用了
.discard()
?是不是有更深层次的东西我没有得到


编辑:虽然“”中的回答回答了我的问题,但我的问题不是重复的。提出的问题不一样,答案是。

,因为
放弃
不返回任何输出。它执行就地删除

你需要做什么

foreign_currencies = set(currencies)
foreign_currencies.discard('USD') #do not assign this as `discard does not return anything.
print foreign_currencies #now you have the currect result

正如vks所说,丢弃是一种就地操作。这就是您的代码“想要”做的:

foreign_currencies = set(currencies)
foreign_currencies.discard('USD')

discard
修改就地设置并返回
None
。第二个代码的结果应与第一个代码相同。