【发布时间】:2016-09-08 11:13:09
【问题描述】:
我有类似的东西:
a = [4,3,1,6,3,5,3]
b = [4,2,6]
我想从 a 中删除 b 的 3 个元素。我试图这样做:
c = a - b
但我认为合并的逆 (+) 可能不是一个东西,并且是正确的:不支持的操作数类型为 -:列表和列表。我正在考虑只是循环遍历它们,但这听起来并不像 pythony。
我的最终状态将是:c = [3,1,3,5,3]
如果您没有注意到,b 不是 a 的子集,它们是无序的。 2 个不同的集合,这些集合也不是唯一的,但只想删除每个 i in b 的 1 个实例,而不是 i in b 的所有实例
编辑目前的答案似乎无法解决我的问题。
a = [1,1,2,2,2,3,4,5]
b = [1,3]
c = [x for x in a if x not in b]
#c result is [2,2,2,4,5]
我要 c 返回:[1,2,2,2,4,5]
为了快速打字,我只是输入了排序后的数字,但列表实际上是未排序的,尽管为了清洁起见,我们可以对它们进行排序。
它们只是在初始化时未排序。 由于列表项中有重复项,我不能按照集合的定义使用集合。
【问题讨论】:
-
这些是集合还是列表?
-
列表,对不起,用词错误
-
你最后一段不清楚。如果
4在列表b中有两个4在列表a中出现,您是要删除其中一个4还是所有4a? -
记录在案 重复的不是正确答案,ysearka 的也不是..... DAX 给了我正确的答案,因为我只想删除一个特定的数字实例,而不是特定类型的所有。
标签: python python-2.7