gpt4 book ai didi

python - 如何使用python追加多维数组?

转载 作者:行者123 更新时间:2023-11-30 21:59:49 24 4
gpt4 key购买 nike

我有两个一维数组:

tminus = [219 220 225 226 227 332]
tplus = [221 222 227 228 229 334]

还有一个二维数组:

t = [[222 224 228 244],[264 280 283 255 346]]

如何为 tminustplus 之间的值 append t?我试图将 t 保留为二维数组。我尝试过:

time = []
for k in range(len(tminus)):
for i in range(len(t)):
for j in range(len(t[i])):
if tminus[k] <= t[j] <= tplus[k]:
time.append(t[j])
print time

但是,我得到的只是空列表。

有什么建议吗?

最佳答案

在这一行中:

if tminus[k] <= t[j] <= tplus[k]:

请注意,您调用 t[j],它将查找 t 内的第 j 个元素。但是,t[j] 始终是一个列表,因为 t 是一个二维数组。

要迭代 t 内的子列表 (t[i]),请使用

t[i][j]

这将获取 t 中第 i 个元素中的第 j 个元素。

例如,如果 i 为 0,且 j 也为 0,则 t[j] 将返回 [222, 224, 228, 244],并且您无法将 intlist 进行比较。相反,t[i][j] 将返回 222,这正是您的目标。

因为您还希望 t 的形状保持不变,所以创建一个临时变量 (appendList),将值 append 到该变量,然后将整个列表 append 到 t

但是,使用您当前的代码,它将创建不必要的列表,因为它将为 tminus 中的每个元素创建一个列表。为了避免这种情况,您可以切换 for 循环的顺序,以便它只创建 appendList。此外,这可能会导致单个数字被追加多次,因此我们将其传递给 set() 来删除重复项,然后将其传递给 list() 来将再次将其放入列表中。

更新的代码:

tminus = [219, 220, 225, 226, 227, 332]
tplus = [221, 222, 227, 228, 229, 334]
t = [[222, 224, 228, 244],[264, 280, 283, 255, 346]]

time = []
for i in range(len(t)): # Iterate over t
appendList = [] # Stores values to be appended to time
for j in range(len(t[i])): # Iterate over the sublists in t
for k in range(len(tminus)): # Iterate over tminus
if tminus[k] <= t[i][j] <= tplus[k]: # Check value
appendList.append(t[i][j]) # Append value to appendList
appendList = list(set(appendList)) # Remove duplicates
time.append(appendList) # Append entire list to time
print(time)

这给出了结果:[[228, 222], []]

注意事项:
- 如果t有重复元素,则只保留其中一个
- 传入 set()

时顺序丢失

关于python - 如何使用python追加多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com