正在获取映射以返回列表匹配的所有T/F值

2024-06-02 04:47:28 发布

您现在位置:Python中文网/ 问答频道 /正文

使用以下语法:

from operator import eq
a = ['a','b', 'c']
b = ['a', 'b']
list(map(eq, a, b))

我得到:

# [True, True]

如何为缺少的'c'元素获取T/F结果:

# [True, True, False]

Tags: fromimportfalsetrue元素map语法operator
2条回答

以下是不使用itertools的版本:

def tmp_func(a,b):
    i = 0
    m = len(max(a,b))
    len_diff = len(a) - len(b)

    if(len_diff < 0):
       a.extend(abs(len_diff)*[''])
    elif (len_diff > 0):
       b.extend(abs(len_diff)*[''])

    while i < m:
        yield (a[i], b[i])
        i=i+1

a = ['a','b', 'c']
b = ['a', 'b']

list(map(lambda x: x[0]==x[1], tmp_func(a,b)))

输出:

[True, True, False]

使用starmapzip_longestfrom itertools中的fillvalue作为zip_longest中的fillvalue来填充缺少的值位置:

In [34]: from itertools import zip_longest, starmap

In [35]: list(starmap(eq, zip_longest(a, b, fillvalue=None)))
Out[35]: [True, True, False]

相关问题 更多 >