2011-09-18 26 views
3

是否有可能轉換到下一個Python列表理解:轉換回路,如果statemnt到列表理解

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')) 
+2

難道你不是指'utf-8'嗎? – Blender

+3

如果你必須這樣做類型檢查,你的設計可能已經被破壞了...... – JBernardo

回答

9

您可以使用Conditional Expressions來完成此項工作。

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

+0

'instanceof'的+1。我認爲沒有想到這一點。 –