为进一步解释,我将举一个例子。我有一个由随机数组成的8x8网格,
m = [
[1 ,5, 2, 8, 6, 9, 6, 8]
[2, 2, 2, 2, 8, 2, 2, 1]
[9, 5, 9, 6, 8, 2, 7, 2]
[2, 8, 8 ,6 ,4 ,1 ,8 ,1]
[2, 5, 5, 5, 4, 4, 7, 9]
[3, 9, 8, 8, 9, 4, 1, 1]
[8, 9, 2, 4, 2, 8, 4, 3]
[4, 4, 7, 8, 7, 5, 3, 6]]
我编写了代码,给出了给定x和y值的对角线列表。例如,如果给定x为2且y为3,则将返回对角线[2,5,8,5,9,8,3]
。这是代码:
def main():
m = [[1 ,5, 2, 8, 6, 9, 6, 8],[2, 2, 2, 2, 8, 2, 2, 1],[9, 5, 9, 6, 8, 2, 7, 2],[2, 8, 8 ,6 ,4 ,1 ,8 ,1],[2, 5, 5, 5, 4, 4, 7, 9],[3, 9, 8, 8, 9, 4, 1, 1],[8, 9, 2, 4, 2, 8, 4, 3],[4, 4, 7, 8, 7, 5, 3, 6]]
x = 2
y = 3
for i in m:
print(i)
print(diagonal(m,x,y))
def diagonal(m, x, y):
#x
row = max((y - x, 0))
#y
col = max((x - y, 0))
while row < len(m) and col < len(m[row]):
yield m[row][col]
row += 1
col += 1
main()
我的问题是,如何获取对角线列表中给定元素的索引。在示例中,坐标为x=2
和y=3
(即数字8),结果对角线为[2,5,8,5,9,8,3]
,因此元素的索引为2。我也不能使用麻木菲。
答案 0 :(得分:0)
您可以使用def subSum(numbers,total,length):
if len(numbers) < length or length < 1:
return []
for index,number in enumerate(numbers):
if length == 1 and number == total:
return [number]
subset = subSum(numbers[index+1:],total-number,length-1)
if subset:
return [number] + subset
return []
来获取列表中元素的索引。
例如:
list.index(element)
我希望这会有所帮助。祝你好运!
答案 1 :(得分:0)
首先,x的情况
RewriteCond %{QUERY_STRING} ^$
这通过对称性简化为idx = x
/sports/2018-19? query staring
答案 2 :(得分:0)
我建议您更改函数(或进行变体)以返回带有坐标和数字的元组,而不是仅返回数字(类似于enumerate()所做的事情。将其映射到数字并查找会更容易)之后的数字坐标
换句话说,如果您:
yield (row,col,m[row][col])
您将可以使用来获取数字:
numbers = [ num for row,col,num in diagonal(m,2,3) ]
但是您也可以在需要时操纵坐标