繁体   English   中英

将列表映射到python中的列表

[英]Mapping list to list in python

在下面编写一个名为compute的函数:

  • 返回整数或浮点型值的任何数字的平方
  • 如果是字符串,则返回内容的反义
  • 或者,如果它是另一种值,则返回值None(不是字符串“ None”)。>>我对此有疑问,不确定如何返回None吗?

     def compute(value): if type(value) == int or type(value) == float: x = value **2 if type(value) == str: x = value[::-1] else: return None return x compute(['x']) 

另外,如何使用地图功能以单行形式将值作为列表(而不是map_object)返回?

例如返回以下内容:

map_compute(['crew', '321', 12, ['x'], True])

至 :

['werc', '123', 144, None, None]

您应该使用此代码。 在此代码中,我们将示例列表与函数compute映射。

在Map函数中,迭代“示例”列表并一个接一个地迭代,列表中的迭代值将调用函数“ compute(value)”并获取返回值。 最后,我们将地图对象转换为列表。

def compute(value):
    print(type(value), value)
    if type(value) == int or type(value) == float:
        x = value **2
    elif type(value) == str:
        x = value[::-1]
    else:
        return None
    return x

example = ['crew', '321', 12, ['x'], True]
map_output = list(map(compute, example))
print(map_output)

输出:

['werc', '123', 144, None, None]

由于类型int / floatstr是不相交的,可以使用elif跳过评估这确保了第二块else逻辑地连接到顶端if 问题在于,如果第一个if块执行,则else: return None将在到达预期的return x之前执行,因为它仅取决于if type(value) == str:块的真值。

我总是在if块上方添加一个空行,以直观地显示它们在逻辑上与上面的任何内容分开。

中间值x是不必要的。 此外,如果您未指定返回类型,Python将返回None

使用map函数将compute等功能应用于列表中的每个元素。 map返回一个迭代器,因此如果您不打算直接对其进行迭代,则需要将其转换为要打印的list

def compute(value):
    if type(value) == int or type(value) == float:
        return value ** 2
    elif type(value) == str:
        return value[::-1] 

print(list(map(compute, ['crew', '321', 12, ['x'], True])))

结果:

['werc', '123', 144, None, None]

您还可以使用列表推导来执行映射操作:

print([compute(x) for x in ['crew', '321', 12, ['x'], True]])

在除映射之外还需要过滤或易于内联映射操作的情况下,这通常比map函数更可取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM