关于 Python 2.7 中 and/or 操作的执行顺序,我有什么不明白的地方?
What don't I understand about the order of execution and/or operations in Python 2.7?
我有一个列表,我正在尝试获取该列表中唯一项的集合或列表。我还需要从列表中删除特定项目的所有实例,在本例中为 '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')
谁能告诉我为什么会这样 and/or 解释一下我对执行顺序不理解的地方?在第一个例子中, .discard()
是在构造集合之前被调用的吗?我没有得到更深层次的东西吗?
编辑:虽然“Why does list.append evaluate to false?”中的回答回答了我的问题,但我的问题并不是重复的。提出的问题不一样,答案是。
因为 discard
没有 return 任何 output.It 进行就地删除。
你需要做
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所说,discard是一个就地操作。这是您的代码 'wants' 要做的事情:
foreign_currencies = set(currencies)
foreign_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')
谁能告诉我为什么会这样 and/or 解释一下我对执行顺序不理解的地方?在第一个例子中, .discard()
是在构造集合之前被调用的吗?我没有得到更深层次的东西吗?
编辑:虽然“Why does list.append evaluate to false?”中的回答回答了我的问题,但我的问题并不是重复的。提出的问题不一样,答案是。
因为 discard
没有 return 任何 output.It 进行就地删除。
你需要做
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所说,discard是一个就地操作。这是您的代码 'wants' 要做的事情:
foreign_currencies = set(currencies)
foreign_currencies.discard('USD')