爲什麼這兩個print語句在從int到string的兩次強制轉換看起來做同樣的事情時會產生不同的結果?我錯過了什麼?爲什麼這個Python類型的表現對於map和沒有map的行爲有所不同
板是一個整數列表
#ex.1
print ' '.join(map(str, board[:3]))
#ex.2
print ' '.join(str(board[:3]))
#out.1
0 1 2
#out.2
[ 0 , 1 , 2 ]
爲什麼這兩個print語句在從int到string的兩次強制轉換看起來做同樣的事情時會產生不同的結果?我錯過了什麼?爲什麼這個Python類型的表現對於map和沒有map的行爲有所不同
板是一個整數列表
#ex.1
print ' '.join(map(str, board[:3]))
#ex.2
print ' '.join(str(board[:3]))
#out.1
0 1 2
#out.2
[ 0 , 1 , 2 ]
print(" ".join(map(str, board[:3])))
切片board
的每個項目映射到面值整數並用空格加入它(你想大概是什麼,以及做正確的事)
print(' '.join(str(board[:3])))
list
的轉換作爲它的表示(用括號和全部),然後插入EAC之間的空間h字符。不是你想要的。
啊 - 謝謝!好的解釋 – Pythonista
看清楚什麼在你的代碼究竟發生了:
第一種情況:
In [4]: map(str,boards[:3])
Out[4]: ['0', '1', '2']
In [5]: ''.join(map(str,boards[:3]))
Out[5]: '012'
轉換爲列表中的所有元素,以字符串格式,當你使用join
它會加入這些元素。
第二種情況:
In [6]: str(boards[:3])
Out[6]: '[0, 1, 2]'
In [7]: ''.join(str(boards[:3]))
Out[7]: '[0, 1, 2]'
首先整個列表轉換爲列表,並在使用上加入一個字符串,它會給出相同的。
謝謝!不完全清楚,但現在:) – Pythonista
所以它的.join似乎是負責刪除括號,並從一個列表右側。 – Pythonista
實際上,'join'就像字符串列表一樣被轉換成一個字符串,並且在那裏定義了特定的字符。在吉恩的情況下,他使用空間和我用過的空字符串。 –
什麼是'board'? –
什麼「投」? 'map'和'str'完全不同。 'map'構建了一個將函數映射到迭代器的結果列表。在這種情況下,您可以將'str'應用於原始列表中的每個元素。 'str'本身返回對象的字符串表示。在這種情況下,對於'list',這是當你僅僅執行'print(board [:3])時你看到的字符串' –
請提供一個[mcve]。 –