Я пытаюсь написать функцию в Python, который принимает список х, имеет нулевой индекс п и другое значение Num, а затем присваивает это значение в этой позиции:приписывание Списка в Python - не вставляя
I понял, сегодня утром, что мы не можем сделать прямое назначение, как мы можем в случае массива в некоторых других языках программирования, как
x=[] //an empty array
x[0]="some value"
Так я искал альтернативу и нашел функцию вставки для списков, которые требуются 2 аргументы и значения вставки в указанной позиции, например
>>> x=[0]
>>> x.insert(123,"as")
>>> x
[0, 'as']
>>> x[0]
0
>>> x[1]
'as'
>>> x.insert(0,1)
>>> x
[1, 0, 'as']
>>> len(x)
3
>>> x.insert(4,"dfsdf")
>>> x
[1, 0, 'as', 'dfsdf']
>>> x.insert(4,"dfsdf")
>>> x
[1, 0, 'as', 'dfsdf', 'dfsdf']
Проблема с этой функцией является то, что если этот элемент уже присутствует в списке, она создает дубликат - то, что не происходит с
x[0]="some -value"
//if the value is not present it appends the value otherwise it overwrites the value at x[0]
Так что я написал еще одну функцию InsertAt, которая будет проверяться данный список - если значение уже присутствует в этой позиции, то, если оно не будет вставлено, оно вернет тот же список. Вот он идет:
def insertAt(x,n,num):
if n>=len(x):
return x.insert(len(x),num)
elif n<len(x) and x[n] != num:
return x.insert(n,num)
else:
return x
Это довольно само explanatory- кроме того, что она всегда возвращает меня None - почему он не возвращает действительное значение ??
'' вернуть x'' вместо '' x.insert (Len (х), кол-во) '' и '' x.insert (n, num) '' после вставки. – Riyaz
Почему вы используете 'return' при работе со списками? Вы редактируете исходный список в этом случае, вам не нужно его возвращать. – tglaria
прав, я понял. возврат будет работать в исходном списке. – Prabhas