Передача списка при сохранении оригинала

Вы отправляете строковый литерал "finish" вместо переменной с именем finish, в которой текст запроса имеет строковое значение (var finish = JSON.stringify(obj)). попробуйте изменить на xhttp.send(finish)

Также следует упомянуть тип контента xhttp.setRequestHeader('Content-type', 'application/json') до вызова send.

12
задан Rex M 26 June 2009 в 04:47
поделиться

7 ответов

Как другие ответы предположили, можно предоставить функции копию списка.

Как альтернатива, Ваша функция могла сделать копию аргумента:

def burninate(b):
    c = []
    b = list(b)
    for i in range(3):
        c.append(b.pop())
    return c

В основном необходимо быть ясными в уме (и в документации), изменит ли функция свои аргументы. По-моему, функции, которые возвращают вычисленные значения, не должны изменять свои аргументы, и функции, которые изменяют их аргументы, ничего не должны возвращать. См. Python [] .sort (), [] .extend (), {} .update (), и т.д. для примеров. Очевидно, существуют исключения (как .pop ()).

Кроме того, в зависимости от Вашего особого случая Вы могли переписать функцию для избегания использования поп () или другие функции, которые изменяют аргумент. например.

def burninante(b):
    return b[:-4:-1]   # return the last three elements in reverse order
14
ответ дан 2 December 2019 в 03:54
поделиться

Можно звонить burninate() с копией списка как это:

d = burninate(a[:])

или,

d = burninate(list(a))

Другая альтернатива должна сделать копию списка в Вашем методе:

def burninate(b):
    c=[]
    b=b[:]
    for i in range(3):
        c.append(b.pop())
    return c

>>> a = range(6)
>>> b = burninate(a)
>>> print a, b
>>> [0, 1, 2, 3, 4, 5] [5, 4, 3]
10
ответ дан 2 December 2019 в 03:54
поделиться

Более общее решение было бы к import copy, и используйте copy.copy() на параметре.

5
ответ дан 2 December 2019 в 03:54
поделиться

Можно использовать copy.deepcopy ()

1
ответ дан 2 December 2019 в 03:54
поделиться

Немного больше читаемого способа сделать то же самое:

d = burninate(list(a))

Здесь, list() конструктор создает новый список на основе a.

6
ответ дан 2 December 2019 в 03:54
поделиться

Другие версии:

def burninate(b):
    c = []
    for i in range(1, 4):
        c.append(b[-i])
    return c
def burninate(b):
    c = b[-4:-1]
    c.reverse()
    return c

И когда-нибудь Вы будете любить понимания списка:

def burninate(b):
    return [b[-i] for i in range(1,4)]
2
ответ дан 2 December 2019 в 03:54
поделиться
burninate = lambda x: x[:-4:-1]
0
ответ дан 2 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: