输入:
列表清单:x [x2 [x1]]
输入x [x2 [x1]]的一维表示matrix = [['.', '+', '.', '.', '-'],
['.', '+', '.', '-', '-'],
['.', '+', '.', '.', '-'],
['.', '+', '.', '.', '-']]
输入x [x2 [x1]]的二维表示(注意:这不是必需的输出)
x1-> 0 1 2 3 4
0 . + . . -
1 . + . - -
2 . + . . -
3 . + . . -
x2^
输出格式: (X1,X2,符号)
examples = [(1,0,+), (4,0,-), (1,1,+), (3,1,-), (4,1,-), (1,2,+), (4,1,-), (1,3,+)]
examples = []
for a in matrix:
for b in a:
if(matrix[a][b] == '+' || matrix[a][b] == '-' ):
examples.append()
list(enumerate(matrix[num]) for num in matrix)
第二种技术虽然提供了以下错误 -
TypeError: list indices must be integers, not list
答案 0 :(得分:3)
In [7]: [ (i,j,character) for i, character in enumerate(row) for j, row in enumerate(matrix) if character == '+' or character == '-']
Out[7]:
[(1, 0, '+'),
(1, 1, '+'),
(1, 2, '+'),
(1, 3, '+'),
(4, 0, '-'),
(4, 1, '-'),
(4, 2, '-'),
(4, 3, '-')]
答案 1 :(得分:2)
我不确定这是不是你想要的,但这是我的代码:
matrix = [['.', '+', '.', '.', '-'], ['.', '+', '.', '-', '-'], ['.', '+', '.', '.', '-'], ['.', '+', '.', '.', '-']]
lst = []
for lineIdx, line in enumerate(matrix) :
for colIdx, col in enumerate(line) :
if matrix[lineIdx][colIdx] in ['+', '-'] :
lst.append((lineIdx, colIdx, matrix[lineIdx][colIdx]))
print lst
并输出:
[(0, 1, '+'), (0, 4, '-'), (1, 1, '+'), (1, 3, '-'), (1, 4, '-'),
(2, 1, '+'), (2, 4, '-'), (3, 1, '+'), (3, 4, '-')]
在我的列表中,我保存了第一行索引,然后是列索引。
答案 2 :(得分:1)
在第二种技术中,num
不是整数,它是x的某个元素。
你可以在一行中这样做:
>>>inp = [['.', '+', '.', '.', '-'], ['.', '+', '.', '-', '-'], ['.', '+', '.', '.', '-'], ['.', '+', '.', '.', '-']]
>>>[ (y[0], x[0], y[1]) for x in (enumerate(inp)) for y in enumerate(x[1]) if y[1] !='.']
[(1, 0, '+'), (4, 0, '-'), (1, 1, '+'), (3, 1, '-'), (4, 1, '-'), (1, 2, '+'), (4, 2, '-'), (1, 3, '+'), (4, 3, '-')]