我有下一个清单
testList = []
testList.append([0,-10])
testList.append([-12,122])
testList.append([13,172])
testList.append([17,296])
testList.append([-10,80])
testList.append([-16,230])
testList.append([-18, 296])
testList.append([-2, -8])
testList.append([-5,10])
testList.append([2,-4])
Run Code Online (Sandbox Code Playgroud)
和另一个包含前一个列表中元素的列表:
m1 = []
m1.append([0, -10])
m1.append([13, 172])
Run Code Online (Sandbox Code Playgroud)
然后我尝试testList使用下一个语句从列表中获取一个子数组:
[element for i, element in enumerate(testList) if i not in m1]
Run Code Online (Sandbox Code Playgroud)
但是我得到了同样的清单testList.
我怎样才能做到这一点?
问题在于你使用枚举.我只是一个整数,因此永远不会在列表中只有列表.试试这个:
[element for element in testList if element not in m1]
Run Code Online (Sandbox Code Playgroud)
如果您不关心列表中的顺序,则可以使用集合:
# result will be a set, not a list
not_in_testlist = set(testlist) - set(m1)
Run Code Online (Sandbox Code Playgroud)
如果您希望结果再次成为列表:
# result will be a list with a new order
not_in_m1 = list(set(testlist) - set(m1))
Run Code Online (Sandbox Code Playgroud)
请注意,使用集合会丢失原始列表的顺序,因为集合是无序类型(它们在幕后使用哈希)。
如果您需要保留订单,那么Andrew Allaire的答案是正确的:
# result is a list, order is preserved
not_in_testlist = [e for e in testlist if e not in m1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6739 次 |
| 最近记录: |