Создание каждого элемента в массиве, массив сам по себе - PullRequest
0 голосов
/ 29 января 2020

В настоящее время я пытаюсь добавить список элементов в лист Google. Я удалил список элементов из другого листа Google, и мой список выглядит следующим образом:

arr = ['1','2','3','4','5','6']

однако, чтобы выполнить пакетное обновление в листе Google, мне нужно сделать свой список следующим образом:

arr = [['1'],['2'],['3'],['4'],['5'],['6']]

Первоначально, я думал, что в момент очистки я просто индивидуально добавлю массив, очистлю и сделаю это снова, как это:

arr.append('1')
master_arr.append(arr)

вывод был хорошим, master_arr выглядит так:

master_arr = [['1']]

поэтому я подумал, что просто очисту arr, выполнив arr.clear(). Но в момент очистки arr мой master_arr также стал таким:

master_arr = [[]]

, поэтому мой вопрос довольно прост, как мне получить этот массив?

arr = [['1'],['2'],['3'],['4'],['5'],['6']]

другая альтернатива записи в Google лист - это использовать для l oop как таковое:

for i in range(len(arr)):
    sheet.update_cell(i+2, 7, arr[i])

Единственный недостаток этого метода - он очень медленный, и эта программа может перебирать до 10000 строк за один раз. мы go запущены в производство, и это занимает около 100 - 3000 миллисекунд на итерацию, и это не единственный столбец, который мне нужно обновить.

Пакетное обновление с использованием списка в формате master_array займет часть времени. Спасибо за любую помощь заранее.

Ответы [ 4 ]

1 голос
/ 29 января 2020

Как уже упоминалось в комментариях, вы можете использовать список пониманий :

arr = [[item] for item in arr]

Другой способ - использовать перечислитель :

for index, item in enumerate(arr):
    arr[index] = [item]

И простой способ, используя диапазон & len :

for index in range(len(arr)):
    arr[index] = [item] 
0 голосов
/ 29 января 2020

Если вы хотите использовать numpy, вы можете сделать это следующим образом

arr = np.array(['1','2','3','4','5','6'])

, а затем вы можете изменить форму массива на

arr = np.reshape(arr,(-1,1))

Я не знаю, как это намного лучше, чем другой метод для массива большой длины, но вы должны попробовать его.

0 голосов
/ 29 января 2020

Вы можете использовать map():

arr = list(map(list, arr))
0 голосов
/ 29 января 2020

С простым обновлением

arr = ['1','2','3','4','5','6']
for idx, item in enumerate(arr):
    arr[idx] = [item]

Понимание списка

print([[item] for item in arr])
...