2013-07-10 223 views
0

爲了使用random.choice(),我不得不把字符串轉換到一個列表:將列表轉換爲字符串?

>>> x = "hello" 
>>> y = list(x) 
>>> y 
['h', 'e', 'l', 'l', 'o'] 

但嘗試這樣做,相反的產生,實際上看起來像['h', 'e', 'l', 'l', 'o'],而不是僅僅hello的字符串。重複這樣做會導致產生如下所示的字符串的無限循環:

"'", '"', ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' ', "'", '"', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", '"', "'", ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", ',', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' ' 

依此類推。

所以,我怎麼能轉換列表回字符串:

>>> x = ['x', 'y', 'z'] 
>>> y = something(x) 
>>> y 
'xyz' 

回答

5
>>> x = "hello" 
>>> y = list(x) 
>>> y 
['h', 'e', 'l', 'l', 'o'] 
>>> ''.join(y) 
'hello' 
2

使用加入:

>>> li=['h', 'e', 'l', 'l', 'o'] 
>>> print ''.join(li) 

即,反轉應用列表構造什麼呢字符串:

>>> ''.join(list('hello')) 
'hello' 
+0

請問爲什麼要投票? – dawg

+0

我沒有做downvote,但我注意到@MattBryant也有一個downvote和你的兩個帖子是唯一兩個直接定義列表,而不是從一個字符串生成它們......也許有人*真*不比如直接創建字符列表? – SethMMorton

4

要將列表轉換爲python中的字符串,您可以使用string.join運算符。

>>> x = ['x', 'y', 'z'] 
>>> y = "".join(x) 
>>> y 
'xyz' 
7

"".join (x)會很容易做到這一點。

4

Python字符串join有竅門。

>>> ''.join(y) 
'xyz' 
4
>>> x = 'abc' 
>>> y = list(x) 
>>> y 
['a', 'b', 'c'] 
>>> ''.join(y) 
'abc' 
>>> 

,並使用random.choice,沒有必要爲你解析字符串列表時,字符串本身是一個序列:

>>> random.choice('abc') 
'c' 
>>> random.choice('abc') 
'a' 
>>> 
3

雖然一些這些答案正確地回答將列表轉換爲字符串的問題,我會注意到你的實際問題是你想對一個字符串使用random.choice(),並且希望先將它轉換爲一個列表。你不需要這麼做 - random.choice()會採取任何順序,包括一個字符串。

x = 'abcde' 
y = [random.choice(x) for i in range(5)] 
print y 
+0

這會更容易,但是我需要'list'的'insert','remove','index'等,並且string - > list - >字符串在這種情況下值得額外的步驟。 – tkbx