簡體   English   中英

根據if條件從python中的列表創建列表

[英]Creating list from list in python based on an if condition

我想創建一個new_list,其中將僅包含滿足條件的標簽數組中的索引為3的old_list項。我正在嘗試如下操作:

new_list = [x for x in old_list if idx[x] == 3]
IndexError: arrays used as indices must be of integer (or boolean) type

但是我收到以下錯誤,因為idx是一個數組。 我怎么解決這個問題?

編輯:Idx是與我的原始數據大小相等的數組,其中包含它們的標簽。 因此,基本上我想創建一個新列表,該列表僅包含原始列表中的項目,例如帶有標簽3。

我想做這樣的事情:cluster_a = [old_list [x] for id in x x,如果x == 3]

澄清:我的舊列表是一個包含3d數組的列表,而idx是一個相等大小的數組,其中包含我上面提到的我列表的每個3d數組的標簽。 我正在盡力解釋這個問題。 如果需要什么請告訴我。

這是帶有3d陣列的列表

這是帶有標簽的數組

問題不在於idx是一個列表,而是可能x是一個數組old_list必須包含一個列表作為元素。 您需要引用索引,而不是項目本身:

[old_list[x] for x in range(len(old_list)) if idx[x] == 3]

這是一個最小的示例:

>>> old_list = [4,5,6]
>>> idx = [3,2,3]
>>> [old_list[x] for x in range(len(old_list)) if idx[x] == 3]
[4, 6]

那這個呢 ?

new_list = [x for x in old_list if idx.index(x) == 3 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM