我有一个如下所示的元组列表:
In [136]: z
Out[136]:
[(0, array([ 0.71428571, 2.92857143, 1.64285714, 1.07142857])),
(1, array([ 2.89473684, 1.68421053, 0.52631579, 3.21052632])),
(2, array([ 1.03571429, 1.5 , 2.75 , 2.96428571])),
(3, array([ 3.35714286, 2.07142857, 3. , 1.28571429])),
(0, array([ 5.234324 , 3.234324 , 4. , 2.34534534])),
(4, array([ 0.6, 0.1, 2.6, 0.4]))]
以及如下字符串列表:
In [138]: b
Out[138]: ['Sam', 'Rachel', 'Mosses', 'Roth', 'Wilhelm']
z
中的整数指向b
中的字符串。
例如,向量(0, array([ 0.71428571, 2.92857143, 1.64285714, 1.07142857]))
和(0, array([ 5.234324 , 3.234324 , 4. , 2.34534534]))
都代表'Sam'
(b[0]
)。
我想从b
删除一个条目。结果,z
中指向此删除条目的所有向量都将被删除。
例如,如果我要删除'Sam'
,我希望我的新z
成为:
In [136]: z
Out[136]:
[(0, array([ 2.89473684, 1.68421053, 0.52631579, 3.21052632])),
(1, array([ 1.03571429, 1.5 , 2.75 , 2.96428571])),
(2, array([ 3.35714286, 2.07142857, 3. , 1.28571429])),
(3, array([ 0.6, 0.1, 2.6, 0.4]))]
In [138]: b
Out[138]: ['rachel', 'mosses', 'roth', 'wilhelm']
答案 0 :(得分:2)
我没有尝试,但可能类似(k
是要移除的键;在您的示例k=0
中):
z = [ (e[0] - (e[0]>k), e[1]) for e in z if e[0] != k ]
说明:您可以在列表解析中使用语法for e in z if
获得过滤效果;通过使用(e[0]>k)
的算术值,您还可以在大于k时将1减去初始密钥。