假设我们有两个列表:
尺寸(15)
uesrDetails
大小(455)
!rememberMe
如果list1中的项目在list2中,如何返回带有布尔值的Size(15)的新列表?
在list2中,有些项目会多次出现,在list1中,每个项目只会出现一次。
结果应如下所示:Size(15)
const setBeforeLists = useCallback(
(lists) => {
beforeListsChanged(lists);
},
[beforeListsChanged]
);
const setUserDetails = useCallback(
(userDetails) => {
userDetailsChanged(userDetails);
},
[userDetailsChanged]
);
useEffect(() => {
//userDetails.id === 'empty' is guest.
if (
userDetails.id !== 'empty' &&
!userDetails.rememberMe
) {
logOut(setUserDetails, setBeforeLists);
}
}, [
setBeforeLists,
setUserDetails,
userDetails
]);
答案 0 :(得分:5)
您可以通过简单的列表理解来做到这一点。由于您必须使用in
次n
,n
是len(list1)
,因此可以使用set
将查找复杂度降低到O(1)
,总体复杂度为O(n)
:
list1 = [1012, 1017, 1037, 1057 , 1068]
set2 = set([1029, 1049, 1012, 1117,1057])
[i in set2 for i in list1]
# [True, False, False, True, False]