我正在嘗試將字串串列串列(代表井字游戲)轉換為整數串列串列,以便我可以執行計算。
這些是可能的輸入:
A = ['X', 'O', '#']
這些對應的整數:
B = [1, 0, 99]
所以總的來說它會做以下事情:
[['X', 'O', 'O'], ['O', 'X', 'O'], ['O', '#', 'X']] -> [[1, 0, 0], [0, 1, 0], [0, 99, 1]]
我創建了以下函式來執行此翻譯,但我確信一定有更快、更有效的方法:
def make_integer_matrix(inputs):
A = ['X', 'O', '#']
B = [1, 0, 99]
integer_matrix = []
#First translate to integers
for row in inputs:
row_new = [B[A.index(row[0])], B[A.index(row[1])], B[A.index(row[2])]]
integer_matrix.append(row_new)
return integer_matrix
uj5u.com熱心網友回復:
考慮創建映射字典并使用嵌套串列推導:
>>> mapping = {'X': 1, 'O': 0, '#': 99}
>>> raw_board = [['X', 'O', 'O'], ['O', 'X', 'O'], ['O', '#', 'X']]
>>> value_board = [[mapping[c] for c in row] for row in raw_board]
>>> value_board
[[1, 0, 0], [0, 1, 0], [0, 99, 1]]
uj5u.com熱心網友回復:
與其不斷搜索第一個陣列來確定相應的索引,不如從兩個串列中創建一個字典并將其用于翻譯:
A = ['X', 'O', '#']
B = [1, 0, 99]
# create translation table from lists
translations = dict(zip(A, B))
for row in inputs:
row_new = [translations[v] for v in row]
integer_matrix.append(row_new)
return integer_matrix
uj5u.com熱心網友回復:
A = ['X', 'O', '#']
B = [1, 0, 99]
game_map = [['X', 'O', 'O'], ['O', 'X', 'O'], ['O', '#', 'X']]
def map_values(A, B):
result_dict = dict()
for a, b in zip(A, B):
result_dict[a] = b
return result_dict
char_to_int_map = map_values(A, B)
game_map_int = [[char_to_int_map[x] for x in row] for row in game_map]
print(game_map_int)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/529651.html
