【问题标题】:How to append in multidimensional arrays using python?如何使用python追加多维数组?
【发布时间】:2019-06-27 00:37:29
【问题描述】:

我有两个一维数组:

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 之间的值附加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

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

有什么建议吗?

【问题讨论】:

  • 您希望 t 的值介于 tminus 的最小值和 tplus 的最大值之间吗?
  • 所以对于 t 的每个值,我想看看那个值是否介于 tminus 和 tplus 的值之间。所以对于 t[0][0],我想看看它是否在 tminus[0] 和 tplus[0] 之间,然后它是否在 tminus[1] 和 tplus[1] 等之间,如果是,那么t 的值附加到时间中。
  • 您希望从给定的输入中得到什么结果?

标签: python arrays loops append


【解决方案1】:

我不确定这是否是您正在寻找的,但据我了解,这应该可以解决问题。

index = 0
for i in range(0,len(t)):
    for j in range(0,len(t[index])):
        if max(tminus) <= t[i][j] <= min(tplus):
            time.append(t[i][j])
    index +=1
return time

【讨论】:

    【解决方案2】:

    在这一行:

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

    请注意,您调用t[j],它将在t 中找到jth 元素。但是,t[j] 将始终是一个列表,因为 t 是一个二维数组。

    要遍历t 内部的子列表(t[i]),请使用

    t[i][j]
    

    这将获得tith 元素中的jth 元素。

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

    因为您还希望 t 的形状保持不变,所以创建一个临时变量 (appendList),将值附加到该变量,然后将整个列表附加到 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()时订单丢失

    【讨论】:

    • 但是我编写循环的方式是正确的编写方式吗?对于 t 的每个值,我想查看该值是否介于 tminus 和 tplus 的值之间。所以对于 t[0][0],我想看看它是否在 tminus[0] 和 tplus[0] 之间,然后它是否在 tminus[1] 和 tplus[1] 等之间,如果是,那么t 的值附加到时间中。我希望 t 数组仍然是二维的
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2020-06-02
    • 2021-05-17
    • 2012-01-16
    • 1970-01-01
    相关资源
    最近更新 更多