问题缘由
在使用@装饰器的时候,我遇到了一个函数传参的问题,我想把*args里面的list进行合并,而且我想通过列表推导来解决这个问题。查询了一下网上,没有人用这种方法解决。只知道可以通过c=a+b或者extend的方式。因为受到了列表推导双for的误导,我一直考虑通过两个for循环的列表嵌套来解决这个问题。后来发现,列表推导完全可以实现对外部变量的修改。
下面是一个举例
a = [1,2,3,3,5,6]
b = [2,3,34,5,6]
c = [3,"m",'jk']
m = [a,b,c]#这个m其实就相当于*args,这样就可以把所有传入的参数进行合并操作。
h =[]#这里用于存储list
k = [h.extend(i) for i in m ]#完成列表合并的操作
l = "".join([str(i) for i in h])#把列表转换成字符串,为什么要再用一次列表推导呢?
# 原因是如果是整数的话,是会报错的。原因见上一篇。
print(l)
print(h)
最大的收获就是,列表推导可以对外部的变量进行操作,
尽管打印k的值我们会发现k是三个none,但是这不影响我们获取列表合并后的结果。
如果你有更多的关于列表推导的心得,经验,望不吝赐教