菜鸟学编程-一个自学入门网站菜鸟学编程-一个自学入门网站菜鸟学编程-一个自学入门网站

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

问题描述:

我有两个1-d数组:

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

和2- d数组:

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

如何追加t对于那些在tminustplus之间的值?我想保持t为2-d阵列。我试过了:

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],这将发现j内的tth元素。然而,t[j]将永远是一个列表,t是一个二维数组。

遍历内部t[i],使用子列表(t

t[i][j]

这得到在jith元素tth元素。

例如,如果i为0,j也为0,t[j]将返回[222, 224, 228, 244],你不能一个int比作list。相反,t[i][j]将返回222,这正是你瞄准。

因为你也想t的形状保持不变,创建一个临时变量(appendList),追加值是,然后附加整个列表t

然而,当前的代码,会造成不必要的名单,因为它会创建一个在tminus每个元素。为了避免这种情况,你可以切换的顺序进行循环,所以它只会造成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 timeprint(time)

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

注意事项: - 如果t已经重复的元素,只有其中一人将留 - 突入set()当订单丢失


未经允许不得转载:菜鸟学编程-一个自学入门网站 » 如何使用python在多维数组追加?