我有一个列表,我正在尝试获取该列表中的唯一项目的集合或列表。我还需要从列表中删除特定项目的所有实例,在本例中为'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?”中的回答回答了我的问题,但我的问题并不重复。提出的问题不一样,答案是。
答案 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')