В этой строке:
if tminus[k] <= t[j] <= tplus[k]:
Обратите внимание, что вы вызываете t[j]
, который найдет j
-й элемент внутри t
.Тем не менее, t[j]
всегда будет списком, так как t
является 2D-массивом.
Чтобы перебрать подсписки (t[i]
) внутри t
, используйте
t[i][j]
Получает j
-й элемент в i
-м элементе в t
.
Например, если i
равно 0 и j
равно 0, t[j]
будетверните [222, 224, 228, 244]
, и вы не можете сравнить int
с list
.Вместо этого 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()