首页 文章

我对Python 2.7中的执行和/或操作顺序了解不了什么? [重复]

提问于
浏览
0

这个问题在这里已有答案:

我有一个列表,我试图获取该列表中的唯一项目的集合或列表 . 我还需要从列表中删除特定项的所有实例,在本例中为 '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 回答

  • 2

    正如vks所说,丢弃是一种到位操作 . 这是您的代码'想要'做的事情:

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

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

相关问题