在下面编写一个名为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
/float
和 str
是不相交的,因此您可以使用 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/