簡體   English   中英

在Python中將字符串列表轉換為元組

[英]Convert a string list to a tuple in Python

我試圖將一個字符串,如'SUP EPI C'轉換為包含所有非間隔字符串的元組。 例如,如果輸入是'SUP EPI C' ,那么程序應該返回('S', 'U', 'P', 'E', 'P', 'I', 'C')我就是嘗試顯而易見的循環方法,我開始如下:

for ch in john:
    if ch != ' ':
        j1 += ch
    else:
        # stuff

我被卡住了,因為我可以添加元組的第一個條目,但跳過后,空間只是逃避我。 任何提示將不勝感激!

元組是不可變的,因此一次構建一個項目是非常低效的。 您可以將序列直接傳遞給tuple

>>> tuple('SUP E P I C'.replace(" ",""))
('S', 'U', 'P', 'E', 'P', 'I', 'C')

或使用生成器表達式(此示例為overkill)

>>> tuple(x for x in 'SUP E P I C' if not x.isspace())
('S', 'U', 'P', 'E', 'P', 'I', 'C')

您的代碼的問題是您正在嘗試將字符串添加到元組; 你需要在元組中添加一個元組:

j1 = ()
for ch in john:
    if ch != ' ':
        j1 += (ch,)

通過這一個小修復,您的原始代碼可以正常工作。

它相當於gnibbler答案中給出的理解:

j1 = tuple(ch for ch in john if ch != ' ')

...或者,就此而言, filter調用:

j1 = tuple(filter(lambda ch: ch != ' ', john))

當然,除非那些“其他東西”是非平凡的,否則你將無法輕易轉換它; 你需要堅持原來的顯式循環。 這並沒有錯。

暫無
暫無

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

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