我試圖元素化&和elementwise | 2個8個列表,包含6個二進制數字,並且工作非常奇怪。 c1和c2以長度爲8的元組開始,長度爲6的元素的元素,res開始爲c1的列表版本。Python:逐位列表操作
安定:
for x in range(8):
for y in range(6):
res[x][y] = (c1[:][x][y])*(c2[:][x][y])
O形環:
for x in range(8):
for y in range(6):
res[x][y] = int(c1[:][x][y] or c2[:][x][y])
一個例子:
c1: ((1, 0, 0, 0, 1, 1), (1, 1, 0, 0, 0, 1), (1, 1, 1, 0, 0, 0), (0, 1, 1, 1, 1, 0), (1, 0, 0, 0, 1, 1), (0, 1, 1, 0, 0, 0), (1, 1, 0, 1, 0, 0), (0, 1, 0, 0, 1, 0))
c2: ((1, 0, 1, 1, 0, 0), (0, 1, 0, 1, 1, 0), (0, 1, 1, 0, 1, 0), (0, 0, 0, 0, 1, 1), (1, 1, 0, 0, 1, 0), (1, 0, 1, 0, 1, 0), (0, 0, 0, 1, 0, 1), (0, 0, 1, 0, 1, 0))
anding res:[[1, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0]]
oring res: [[1, 1, 0, 0, 1, 1], [1, 1, 0, 1, 1, 1], [1, 1, 1, 0, 1, 0], [0, 1, 1, 1, 1, 1], [1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 1, 0], [1, 1, 0, 1, 0, 1], [0, 1, 1, 0, 1, 0]]
爲C1,並且可以在比第一子列表更會混亂的其它輸入。
編輯:這已解決。這很可能是代碼其他部分的別名問題,而我最終只使用了列表解析。
在Python中通過索引循環通常是一個非常糟糕的主意。改用[列表解析](http://www.youtube.com/watch?v=pShL9DCSIUw)來實現這種功能。 –
你在哪裏「初始化」資源? – mgilson
使用'&'進行ANDing和使用'|'進行ORing。 –