将函数列表的清单传递给函数
我有列表中的值。将函数列表的清单传递给函数
我想发送整个块到一个转换函数,然后返回所有在同一结构中转换后的值。
my_list = [sensor1...sensor4] = [hum1...hum3] = [value1, value2, value3, value4]
所以,一些嵌套列表
def conversion(my_list): dictionaries
for sensor in my_list:
for hum in sensor:
for value in hum:
map(function, value)
有没有办法做一个列表理解为一个班轮?我不确定如何在解析中使用map函数,特别是当您有多个嵌套迭代时。
map(function, value)
既然你只是映射每个值的函数,没有在列表中收集的返回值,使用列表理解是不是一个好主意。你可以用来做,但是你会收集没有价值的列表项目,只是为了以后把它们丢掉 - 这样可以节省几条实际上有更好用途的线条:清楚地说明发生了什么,而不是在一条单独的,漫长而复杂的线条中。
所以我的建议是保持原样。这样做更有意义,并清楚地表明发生了什么。
但是我收集的价值。他们都需要转换并保存在与原来相同的结构中。
在这种情况下,你还是不想列表理解,因为这将意味着你创建一个新的列表(没有真正的理由)。相反,只需更新最内层的列表。要做到这一点,你需要改变你虽然迭代的方式:
for sensor in my_list:
for hum in sensor:
for i, value in enumerate(hum):
hum[i] = map(function, value)
这将更新内部列表。
另外,由于value
实际上是值的列表,你也可以用切片的语法替换value
列表的内容:
for sensor in my_list:
for hum in sensor:
for value in hum:
value[:] = map(function, value)
另外一个最后要注意:如果你使用Python 3,记住map
返回一个生成器,所以你需要先使用list(map(function, value))
将它转换成列表;或者使用[function(v) for v in value]
对该部分使用列表理解。
这是正确的做法。你可以使用列表理解来做到这一点,但你不应该为代码的可读性,因为它可能不会更快。
*“lisibility”*? – jonrsharpe
@jonrsharpe https://zh.wiktionary.org/wiki/lisible – poke
@jonrsharpe ho ...今天我用英语学习了一些东西。我的意思是可读性 – FunkySayu
......你认为第一行是干什么的? – jonrsharpe
@jonrsharpe psuedocode – cc6g11
它甚至不是伪代码;为什么不提供[mcve] *实际显示你正在做什么?* – jonrsharpe