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每日一練
想要投稿的朋友可以給我們的公眾號留言,備註好【問題】【解決方案】【討論】【來源】即可
http://weixin.qq.com/r/YygOFnnE8iSNrT11931x (二維碼自動識別)
推薦閱讀:
※認識概率,更理性地生活(三)
※Python科學數據解析
※python做音頻節奏識別(beat detector)有沒有現成的庫 (js也行)?
※python變數、語句
※python re.sub 應用
TAG:Python |