使数组中的每个元素本身成为一个数组

Making each element in an array, an array by itself

我目前正在尝试将项目列表附加到 google sheet 中。我从另一个 google sheet 中抓取了一个项目列表,我的列表如下所示:

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

但是,为了批量更新到 google sheet,我需要这样制作我的列表:

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

最初,我想,在抓取的时候,我将单独附加数组,清除并重新执行,就像这样:

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

输出很好,master_arr 看起来像这样:

master_arr = [['1']]

所以,我想我会通过执行 arr.clear() 来清除 arr。但是在清除arr的时候,我的master_arr也变成了这样:

master_arr = [[]]

所以我的问题很简单,我如何获得这个数组?

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

另一种写入 google sheet 的方法是这样使用 for 循环:

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

这种方法的唯一缺点是它非常慢,一旦我们投入生产,这个程序可能会迭代多达 10,000 行,每次迭代大约需要 100 - 3000 毫秒,这不是我拥有的唯一专栏待更新。

使用 master_array 格式的列表进行批量更新只需要一小部分时间。提前感谢您的帮助。

简单更新

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

列表理解

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

您可以使用 map():

arr = list(map(list, arr))

如评论中所述,您可以使用 list comprehensions:

arr = [[item] for item in arr]

另一种方法是使用 enumerator:

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

使用range & len的简单方法:

for index in range(len(arr)):
    arr[index] = [item] 

如果你想使用numpy,你可以这样做

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

然后你可以通过

重塑数组
arr = np.reshape(arr,(-1,1))

对于大长度数组,我不知道它比其他方法有多少改进,但您应该尝试一下。