将循环和if语句转换为列表推导式

3

是否可以将以下内容转换为Python列表推导:

values = [a,b,c,d,...]

converted_values = []
for item in values:
    if type(item) == datetime.date:
        converted_values.append(item)
    else:
        converted_values.append(item.decode('utf-8'))

3
如果你必须像那样进行类型检查,那么你的设计很可能已经存在问题了。 - JBernardo
2个回答

9
你可以使用条件表达式来实现这个功能。请参考Python文档中的说明
converted_values = [item if type(item) == datetime.data
                    else item.decode('utf-8')
                    for item in values]

Python条件语句相当易读。以下是一些示例,展示它们的工作方式:

print("yes" if True else "no") # prints "yes"
print("yes" if False else "no") # prints "no"

5
converted_values = [item if type(item) == datetime.date else item.decode('utf-8')
                       for item in values]

我假设你的意思是 utf-8
此外,Python文档建议使用 isinstance(item, datetime.date) 而不是 type(item) == datetime.date

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接