我遇到了作業問題。Python:從列表轉換爲字符串
「寫的函數,to_str(a)中,接受一個陣列,每個 其元素轉換爲字符串(使用STR(A [1])),並且所有這些 串附加在一起。 「
這是我
def to_str(a):
for i in a: a.append([i])
return str(a[i])
我不知道如何使用STR(A [1]),我想知道,如果有人可以點我到正確的方向
我遇到了作業問題。Python:從列表轉換爲字符串
「寫的函數,to_str(a)中,接受一個陣列,每個 其元素轉換爲字符串(使用STR(A [1])),並且所有這些 串附加在一起。 「
這是我
def to_str(a):
for i in a: a.append([i])
return str(a[i])
我不知道如何使用STR(A [1]),我想知道,如果有人可以點我到正確的方向
從文檔:
STR(對象) - >字符串
返回一個不錯的字符串表示的對象。如果參數是 一個字符串,則返回值是同一個對象。
所以str(a[i])
將返回一個字符串表示的a[i]
,即轉換a[i]
爲字符串。 然後,您需要連接所有值爲i
的字符串。
至於你的代碼,我有以下幾點意見:
i
是a
的元素,而不是一個指標,因爲你可能會想;a
的元素到a
(無盡,恐怕);a[i]
可能會導致異常,因爲像我說的,i
是一個元素,而不是索引;此外,如果使用str(a[i])
不是嚴格強制性的,我建議跳過它unpythonic。完全不需要索引。例子:
''.join(str(element) for element in a)
或
''.join(map(str, a))
將返回你所需要的。在這兩種情況下,str
都適用於a
的所有元素。
最簡單易懂的(「初學者」)的方式,而不使用索引將
s = ''
for element in a:
s += str(element)
return s
這有點低效率的,但它有效地做同樣的事情。
的滿足所有任務的標準代碼相當類似:
def to_str(a):
return reduce(lambda x, y: x + str(y), a, '')
其中在提到的方式究竟件事情:首先將它們轉換爲字符串,然後添加到由已處理元素構成的字符串中(開頭只是emty字符串)。
編輯:更清晰(和Python 3支持)的方式是使用顯式循環通過元素。它不完全一樣,同時闡明瞭如何減少()的工作原理:
def to_str(a):
result = '' # third argument of reduce()
for item in a:
result += str(item) # does what reduce() lambda argument was doing
return result
最簡單的方法是:
[str(i) for i in a]
如果你想有一個函數:
def to_str(a):
return [str(i) for i in a]
解決了問題的第一部分,而不是「將所有這些字符串附加在一起」部分。 – dusan
每個元素轉換成字符串是最容易使用列表理解:
[ str(i) for i in a ]
# equivalent to
[ str(a[i]) for i in range(len(a)) ]
# equivalent to
map(str, a) # most concise, use if you want to feel incredibly clever...
所以你可以寫這個功能:
def to_str2(a):
''.join([str(i) for i in a]) # concatenates the list as a list of strings
。
您的代碼近做到這一點:
def to_str(a):
new_a = [] # rather than use the same a!
for i in a:
new_a.append(str(i)) #convert i to string before appending
return new_a
我認爲循環遍歷'a'本身的元素更清晰,而不是循環遍歷索引。 – DSM
@DSM我也是,太糟糕了,這是作業的一部分。我也在我的回答中加了這個。 –
非常感謝!它清除了我很多疑問。 – user1692517