我对Python 2.7中的执行顺序和/或操作有何了解?

时间:2016-01-19 19:51:25

标签: 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')

但注意到该函数返回了'NoneType'

为了让它发挥作用,我必须分两步完成。

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

有谁能告诉我为什么会这样和/或解释我对执行顺序的理解?在第一个例子中,在构造集合之前调用.discard()?是不是我没有得到更深的东西?

编辑:虽然“Why does list.append evaluate to false?”中的回答回答了我的问题,但我的问题并不重复。提出的问题不一样,答案是。

2 个答案:

答案 0 :(得分:2)

因为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

答案 1 :(得分:0)

正如vks所说,丢弃是一种到位操作。这就是您的代码所需要的'要做:

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