ggplot(dat, aes(g, val, fill = dim, color = dim)) +
geom_col(size = 2) +
facet_wrap(~var) +
scale_color_manual(values = c('firebrick', 'navy')) +
scale_fill_manual(values = c(NA, 'navy'))
是否可以将list2中的值从list1中完全删除并输出:
list1 = [1, 'a', 'c', 3, 5, 3, 3, 'a', 'b']
list2 = ['a', 3, 'b']
答案 0 :(得分:1)
您可以尝试将它们从列表投射到集合!
>>> list1 = [1, 'a', 'c', 3, 5, 3, 3, 'a', 'b']
>>> list2 = ['a', 3, 'b']
>>> set(list1) - set(list2)
# returns => {1, 5, 'c'}
>>> list(set(list1) - set(list2))
# returns => [1, 5, 'c']
Sets是一个本地python对象,类似于列表,但是它们是无序的,并且每个项目都是唯一的。使用集合,您可以执行集合操作,例如“子集”,“联合”和“差异”(这就是它)。
注意:仅当您不关心重复项或项目订单时,此技术才有效。如果您必须保留其中任何一项或全部,那么列表理解或其他过滤技术会更好。
答案 1 :(得分:1)
使用给定的列表,
>>> list1 = [1, 'a', 'c', 3, 5, 3, 3, 'a', 'b']
>>> list2 = ['a', 3, 'b']
使用列表理解
>>> list3 = [item for item in list1 if item not in list2]
>>> list3
[1, 'c', 5]
当我们更改list2
时,输出将如预期的那样:
>>> list2 = ['a', 5, 'b']
>>> list3 = [item for item in list1 if item not in list2]
>>> list3
[1, 'c', 3, 3, 3]
答案 2 :(得分:0)
在查看了其他答案之后,您可能想要尝试结合以下两种方法的混合方法:
>>> list1 = [1, 'a', 'c', 3, 5, 3, 3, 'a', 'b']
>>> list2 = ['a', 3, 'b']
>>> remove = frozenset(list2)
>>> list3 = [x for x in list1 if x not in remove]
>>> list3
[1, 'c', 5]
>>>