簡體   English   中英

Python for-if 列表理解循環中的語法錯誤

[英]Syntax error in Python for-if list comprehension loop

將前導和數據省略到以下內容,因為它看起來像列表理解的編寫方式錯誤。 它的目的是根據它們是二維(索引和列)還是一維(僅索引和列)或一維來循環遍歷pandas DataFrameSeries以及 label 的列表l 為什么會出現錯誤(即使關閉換行符)?

[pd.DataFrame(A, index=labels, columns=labels) for A in l 
            if type(A) is pd.DataFrame else pd.Series(A, index=labels)]

結果是

    if type(A) is pd.DataFrame else pd.Series(A, index=tickers)]
                                  ^
SyntaxError: invalid syntax

您需要將for A in l移動到語句的末尾。

[pd.DataFrame(A, index=labels, columns=labels) if type(A) is pd.DataFrame else pd.Series(A, index=labels) for A in l]

請參閱: 是否可以在列表理解中使用“else”?

是你的問題不是由於是。 也許嘗試使用 isinstance(type(A), pd.DataFrame) 另一點是您的列表理解的順序,如果認為它應該是

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

所以你可以試試

[pd.DataFrame(A, index=labels, columns=labels) if isinstance(type(A) , pd.DataFrame) else pd.Series(A, index=labels) for A in l ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM