为了账号安全,请及时绑定邮箱和手机立即绑定

是否在列表中理解?

是否在列表中理解?

梵蒂冈之花 2019-06-25 16:08:27
是否在列表中理解?如何在Python中完成以下操作?row = [unicode(x.strip()) for x in row if x is not None else '']实质上:用空字符串替换所有Nones,然后履行职能。
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

你完全可以做到,这只是一个订购问题:

[unicode(x.strip()) if x is not None else '' for x in row]

总体而言,

[f(x) if condition else g(x) for x in sequence]

以及,对于清单的理解if只是条件,

[f(x) for x in sequence if condition]

注意,这实际上使用了不同的语言构造,条件表达式,它本身并不是理解句法,而if在.之后for…in是列表理解的一部分,并且习惯于滤光器来自源可迭代的元素。


条件表达式可以在各种情况下使用,在这些情况下,您需要根据某种条件在两个表达式值之间进行选择。这与三元算子?:存在于其他语言中..例如:

value = 123print(value, 'is', 'even' if value % 2 == 0 else 'odd')


查看完整回答
反对 回复 2019-06-25
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

单程:

def change(f):
    if f is None:
        return unicode(f.strip())
    else:
        return ''row = [change(x) for x in row]

尽管如此,你还是有:

row = map(change, row)

或者你可以使用兰达内联。


查看完整回答
反对 回复 2019-06-25
?
四季花海

TA贡献1811条经验 获得超5个赞

以下是另一个说明性的例子:

>>> print(", ".join(["ha" if i else "Ha" for i in range(3)]) + "!")Ha, ha, ha!

它利用了这样一个事实if i评估为False0True函数生成的所有其他值。range()..因此,对列表的理解评估如下:

>>> ["ha" if i else "Ha" for i in range(3)]['Ha', 'ha', 'ha']


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 439 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信