Вот код, вы пытаясь преобразовать в listcomp:
Quadrant=[]
for n in range (len(vector1)):
Quadrant+=[y[vector1[n]]]
Первое, вы должны преобразовать его в форму, используя append
. Там действительно нет никаких причин, чтобы построить список, состоящие из 1-элемента из y[vector1[n]]
в первую очередь, так что просто лома, что и у нас есть что-то, что может append
непосредственно:
Quadrant=[]
for n in range(len(vector1)):
Quadrant.append(y[vector1[n]])
И теперь у нас есть то, что мы можем преобразовать непосредственно в Пояснение к списку:
Quadrant = [y[vector1[n]] for n in range(len(vector1))]
Это все, что нужно.
Тем не менее, я не уверен, почему вы делаете for n in range(len(vector1))
в первую очередь, если только вам нужно n
для vector1[n]
. Просто перебираем vector1
непосредственно:
Quadrant=[]
for value in vector1:
Quadrant.append(y[value])
Который, опять-таки, может быть превращена непосредственно:
Quadrant = [y[value] for value in vector1]
Однако все это предполагает, что исходный явный цикл является правильным, в первую очередь, что, очевидно, что нет. Ваш vector1
является dict, а не список. Зацикливаясь на нем, ключи от 0 до len(vector1)
собираются поднять KeyError
по всему месту. Изменение его на цикл непосредственно над vector1
решит эту проблему, но это означает, что вы перебираете ключи. Итак ... Я понятия не имею, что на самом деле пытался сделать ваш код, но сначала получим простое, но вербальную версию, и вы можете, возможно, преобразовать ее в понимание так же легко, как и выше.
Вы не хотите использовать '361' в своих' range() 'вызовах вместо' 351'? Есть 360 градусов по кругу ... – MattDMo
@MattDMo, но тогда вы получите 37 10-градусных ломтиков. OP правильно (360 градусов IS 0 градусов, начало диапазона) –
@ user3424423 Где? Думаю, нет. –