python - 在Python中将列表映射到列表

标签 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]

最佳答案

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

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

中间值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]

您还可以使用list comprehension执行映射操作:

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

对于除了映射之外还需要过滤或者可以轻松内联映射操作的情况,这通常比 map 函数更可取。

关于python - 在Python中将列表映射到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59005288/

相关文章:

python - 为什么我的交换列表的两个元素的代码出错了?

python - 在Python中读取和分组文本文件的内容

python - python中tty的非打印输出?

python - 本地二进制模式中的意外行为 - python skimage

python - 在Python中提取子图坐标

python - 我应该如何处理 Python 中的 "Unexpected indent"?

python - 使用 Sphinx 通过命令行参数记录脚本时出现异常

python - 如何对一项进行排序以匹配另一项,但在其他地方应用该排序?

python - 我可以只将 Python .pyc 文件部署到 Google App Engine 吗?

python - 检查 QMessageBox 中的哪个按钮被点击