2015-12-03 56 views
-1

我已經通過使用下面的代碼創建的列表清單在我的字符串'ABCDEFG...'隨機字母我曾嘗試下面的代碼:錯誤的Python

letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
grid = [i.replace('.', random.choice(letters.upper())) for i in grid] 

我已經得到了這個錯誤:

AttributeError: 'list' has no object 'replace' 

我查看了互聯網,每個人都說使用這個語法的列表理解來代替一切。但不幸的是,它不工作。

+0

請注意,您使用了兩個'for'語句來創建網格 - 您將需要一個類似的數字來訪問元素。你不需要'替換',修改你原來的理解就應該去做。用隨機選擇替換''.''。 – cdarke

回答

1

因爲grid是列表的列表。因此,i是一個列表。你不能替換一個列表,因爲它是一個基於字符串的函數。

你想這樣的:

grid2 = [map(lambda x: x.replace('.', random.choice(letters.upper())), i) for i in grid] 

map()將通過執行一定的功能,lambda x:每個列表進行迭代。如果你使用的是Python 3,你需要在map()周圍撥打list(),因爲它返回一個不是列表的生成器。

+0

Ahh是有道理的..我認爲這與它不僅僅是一個列表有關。我只是希望它會更簡單。 – Tom