標籤:

Python每日一練0002

問題

如何序列化輸出元素包含字元串元組的字元串元組(好繞)

舉個例子

>>> zoo1 = (monkey, elephant)>>> zoo2 = (python, zoo1)

將zoo2輸出為python, monkey, elephant

解決方案

容易想到使用join()函數,但join()函數要求元素必須都是字元串類型,否則會拋出TypeError錯誤

>>> zoo1 = (monkey, elephant)>>> zoo2 = (python, zoo1)>>> print(, .join(zoo2))Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: sequence item 1: expected str instance, tuple found

一個比較簡單的方法是將zoo1給unpack進zoo2中,然後再將zoo2給unpack進print函數,最後指定print函數的sep參數來輸出

>>> zoo1 = (monkey, elephant)>>> zoo2 = (python, *zoo1)>>> print(*zoo2, sep=, )python, monkey, elephant

如果想要將結果存儲起來,那麼使用join就可以了

>>> zoo1 = (monkey, elephant)>>> zoo2 = (python, *zoo1)>>> s = , .join(zoo2)>>> print(s)python, monkey, elephant

討論

上面的方法僅僅是針對於特定的情況,那麼對於一個多重嵌套的元組該如何處理呢

容易想到使用遞歸來實現,判斷當前元素的類型來決定是否結束遞歸即可

下面是一個簡單的實現方法

zoo = ( monkey, elephant, (penguin, camel), (zebra, giraffe), python,)def my_join(tpl, sep): return sep.join(x if isinstance(x, str) else my_join(x, sep) for x in tpl)print(my_join(zoo, , ))

來源

Stack Overflow

關注/投稿

歡迎關注我們的微信公眾號:python每日一練

想要投稿的朋友可以給我們的公眾號留言,備註好【問題】【解決方案】【討論】【來源】即可

weixin.qq.com/r/YygOFnn (二維碼自動識別)

推薦閱讀:

認識概率,更理性地生活(三)
Python科學數據解析
python做音頻節奏識別(beat detector)有沒有現成的庫 (js也行)?
python變數、語句
python re.sub 應用

TAG:Python |