Я хочу создать новый список из существующего списка таким образом, чтобы каждый элемент в новом списке был произведением всех чисел в существующем списке, кроме элемента в той же позиции, что и новый элемент списка.
Например, [2,4,5] -> [20,10,8]
Я нашел решение, в котором один цикл for, j, пересекает правую сторону i-го(текущий) элемент, в то время как в другом для цикла, k покрывает левую сторону элементов - Умножает и дает результат.
def mulList():
oldList = [2,4,5]
newList = []
for i in range(len(oldList)):
a = 1
for j in range(i+1,len(oldList)):
a *= oldList[j]
for j in range(i-1,-1,-1):
a *= oldList[j]
newList.append(a)
print(newList)
mulList()
Позже я узнал, что мы можем решить это с помощью двух циклов for, таких как эта, где я ничего не делаю, если я равен j
def mulList():
oldList = [2,4,5]
newList = []
for i in range(len(oldList)):
a = 1
for j in range(len(oldList)):
if j == i:
a += 0
else:
a *= oldList[j]
newList.append(a)
print(newList)
mulList()
Мне было интересно, есть лиЛюбой лучший способ решить это только с одним для цикла.