Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在满足条件时压缩2个列表中的项目-python_Python_Arrays_List_Zip - Fatal编程技术网

如何仅在满足条件时压缩2个列表中的项目-python

如何仅在满足条件时压缩2个列表中的项目-python,python,arrays,list,zip,Python,Arrays,List,Zip,当我有两个列表时: list1 = ['course1', 'course2', 'course3', 'course4', 'course5'] list2 = [12, 3, 3, 4, 5] 我只想在满足条件的情况下将索引列表项压缩在一起。否则,对于列表索引项:0。如果要从列表1和列表2中获取列表的压缩列表,条件是列表2的项应>=5.5,请尝试以下操作: list3 = [[i,j] for i,j in zip(list1, list2) if j>=5.5] 输出: 我建议使

当我有两个列表时:

list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]

我只想在满足条件的情况下将索引列表项压缩在一起。否则,对于列表索引项:0。

如果要从列表1和列表2中获取列表的压缩列表,条件是列表2的项应>=5.5,请尝试以下操作:

list3 = [[i,j] for i,j in zip(list1, list2) if j>=5.5]
输出:


我建议使用列表理解的简短版本:


[x代表ziplist1中的x,如果x[1]>=5.5]

忘记zip,创建自己的解决方案:

list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]


def zip_condition(list_a, list_b, func):
    iter_a = iter(list_a)
    iter_b = iter(list_b)
    while 1:
        try:
            a, b = next(iter_a), next(iter_b)
        except StopIteration:
            return
        if func((a, b)):
            yield (a, b)


result = list(zip_condition(list1, list2, lambda x: x[1] >= 5.5))
print(result)
使用地图压缩:


压缩全部,然后过滤。你期望的结果是什么?你将它们压缩成什么数据结构?我建议将它们全部压缩,然后删除任何不符合条件的键、值对。我只想在number>=5.5时将索引项压缩在一起。什么是索引项?
list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]


def zip_condition(list_a, list_b, func):
    iter_a = iter(list_a)
    iter_b = iter(list_b)
    while 1:
        try:
            a, b = next(iter_a), next(iter_b)
        except StopIteration:
            return
        if func((a, b)):
            yield (a, b)


result = list(zip_condition(list1, list2, lambda x: x[1] >= 5.5))
print(result)
list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]

m = map(lambda x, y: (x, y) if y > 5.5 else None, list1, list2)
list(filter(None.__ne__, m))
# [('course1', 12)]