我有两个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
对于那些在tminus
和tplus
之间的值?我想保持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
内的t
th元素。然而,t[j]
将永远是一个列表,t
是一个二维数组。
遍历内部t[i]
,使用子列表(t
)
t[i][j]
这得到在j
的i
th元素t
th元素。
例如,如果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 time
print(time)
这给出结果:[[228, 222], []]
注意事项:
- 如果t
已经重复的元素,只有其中一人将留
- 突入set()
当订单丢失
我真的不知道,如果这是你在找什么,但是从我的理解,这应该解决的问题。
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