我有两个数字列表。每个都是数字[1,2,3,4]
,但在一个数字中还有一个额外的第五个数字,例如。
list1 = [1,2,3,4]
list2 = [1,2,3,4,5]
我需要强制list2
与list1
相同,删除list2
中的第5个号码或将list2
替换为list1
的另一个副本}?
可以这样做吗?
答案 0 :(得分:8)
这个问题措辞有点奇怪。如果你想改变其中一个列表,那么答案是否定的:那是不可能的。否则,您当然可以在任何需要的地方使用list1
代替list2
。
答案 1 :(得分:4)
Data.List
提供intersect
方法,这似乎正是所要求的。
答案 2 :(得分:3)
执行list2
的最简单,最高效的方式与list1
相同
let list2 = list1 in .......
这甚至不需要列表元素具有可比性。
答案 3 :(得分:2)
[ x | x <- list1, x `elem` list2 ]
答案 4 :(得分:0)
这是另一个虽然我最喜欢Louis_Wasserman的解决方案
filter (`elem` [1..4]) [1..12]
>>> [1,2,3,4]
或
filter (flip elem [1..4]) [1..12]
>>> [1,2,3,4]
fliter (\x ->x `elem` [1..4]) [1..12]
>>> [1,2,3,4]
如果列表2无关紧要为什么你首先使用它? 我想到了另一个:
const [1..4] list2
>>> [1,2,3,4]
最后一个忽略第二个列表并填写第一个。