python中的列表解析与函数参数*args **kwargs用法
来源:互联网 发布:拳击 泰拳 知乎 编辑:程序博客网 时间:2024/06/06 20:32
一 列表解析:(性能远高于for循环) python有且只有一个最优解
[ex for item in iter if condition] ==>list
返回列表
li = [1,2,3,4,5]
li1 = [i+1 for i in li]
li1
[2, 3, 4, 5, 6]
加条件:>>> li[1, 2, 3, 4, 5]>>> [x+1 for x in li if x % 2 == 0][3, 5]>>> type(li1)<type 'list'>实现:>>> li1=[]>>> for x in li:... if x % 2 == 0:... li1.append(x+1)... >>> li1[3, 5]多重条件: [ex for i in li if condition1 if condition2 ]或者and or笛卡尔积:>>> [(x,y) for x in [1,2,3,45] for y in [1,2,3,4]]
[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (45, 1), (45, 2), (45, 3), (45, 4)]
条件:>>> [(x,y) for x in [1,2,3,45] for y in [1,2,3,4] if x % 2 == 0 ]
[(2, 1), (2, 2), (2, 3), (2, 4)]
[(x,y) for x in [1,2,3,45] for y in [1,2,3,4] if x % 2 == 0 if y >= 1]
[(2, 1), (2, 2), (2, 3), (2, 4)]
(ex for i in iter) ==>iter
返回迭代器 (性能比列表好,不用全部计算)可生成一个无限大的序列
li1 = (i+1 for i in li)
>>> li1<generator object <genexpr> at 0x7efd8687fbe0>>>> li1.next()2>>> li1.next()3>>> li1.next()4>>> type(li1)<type 'generator'> 生成器 //生成器只能转换为迭代器(中间一步由解释器转换)需要用到哪个值就会计算哪个值其他的值搁置
二 function 函数:
1.返回值 执行return语句就会返回后面不执行 若函数里没有return返回值则默认返回None
def test():
print “hello world”
user_name = test()
print user_name
[root@desktop43 python]# python fuc.py
hello world
None
若需要返回值则用return 然后赋值给变量
2.位置传参和关键字传参
有默认值可以不传参数 (若传参数则会覆盖默认的参数)
所有带默认值的参数必须放在最后面,如:
test(a,b,c=100)
test(a,b=100,c) ///错误类型
*args 可变位置参数(数量可变,位置不变) 参数打包输出为元组 (输入的值确定不能修改所以用元组最合适) 可用索引args[0]
def func(*args):
print args
print args[0]
func(1,2,3,4,5)
[root@desktop43 python]# python args.py
(1, 2, 3, 4, 5)
1
/////可变位置传参
def func(i,j,*args):
print args
print args[0]
func(1,2,3,4,5)
[root@desktop43 python]# python args.py
(3, 4, 5)
3
/////可变位置参数混合传参不能有func(i=1,j=0,98902,35,242)传参只能func(1,2,3,4,5), 默认解释器会将第一个值赋给第一个变量
**kwargs 可变关键字参数(数量可变,关键字不变)
def func1(**kwargs):
print kwargs
func1(a=123,b=456,c=667)
[root@desktop43 python]# python args.py
{‘a’: 123, ‘c’: 667, ‘b’: 456}
//////////可变关键字传参
def func1(i,j,**kwargs):
print kwargs
print i
print j
func1(i=123,j=456,c=667,d=’qqq’)
[root@desktop43 python]# python args.py
{‘c’: 667, ‘d’: ‘qqq’}
123
456
///////混合传参,只能关键字传参func(i=123,j=456,c=667,d=’qqq’) 不能fun(1,2,3,4,5)
3.解包:
(*list/*tuple) 解包为位置参数直接调用
(**dict) 解包为关键字传参
def func(i,j,*args):
print args
print args[0]
li=[1,2,3,4,5,6]
func(*li) ///func(li[0],li[1],li[2]…li[5]) ///解包操作
p=(7,8,9,0)
func(*p)
[root@desktop43 python]# python args.py
(3, 4, 5, 6)
3
(9, 0)
9
//////混合,列表或元组解包传参相当于func(li[0],li[1],li[2]…li[5])
def func1(i,j,**kwargs):
print kwargs
print i
print j
d = {‘i’:1,’j’:2,’c’:3,’d’:4}
func1(**d)
[root@desktop43 python]# python args.py
{‘c’: 3, ‘d’: 4}
1
2
//////混合,字典解包传参相当于func1(i=1,j=2,c=3,d=4)
- python中的列表解析与函数参数*args **kwargs用法
- python函数参数*args**kwargs用法实例
- Python函数*args与**kwargs的用法
- python函数中的*args与**kwargs
- python中的含有 *args 和**kwargs的用法 作为参数的函数,参数输入问题
- Python中的*args与**kwargs
- python 可变参数函数定义* args和**kwargs的用法
- python 函数参数 *args 和 **kwargs
- Python中的可变参数*args和**kwargs
- python中的可变参数*args, **kwargs
- python中的魔法参数:*args和**kwargs
- Python 中的 *args 和 **kwargs 参数
- python中的魔法参数:*args和**kwargs
- Python中的*args和**kwargs的用法
- 【python】args kwargs 用法
- python *args **kwargs用法
- python ----*args与**kwargs
- Python定义的函数(或调用)中参数*args 和**kwargs的用法
- IO流复制文件11种方法
- struts2配置default-properties
- chrome设置--disable-web-security解决跨域
- HttpURLConnection post json
- 生活中的物理、化学(四)
- python中的列表解析与函数参数*args **kwargs用法
- android ToolBar 的简单使用
- FFmpeg学习(二)
- Java中&&和&以及||和|的区别
- SensorManager 简介
- Cocos2d creator js 使用javascript制作扑克游戏
- 莫队算法小介绍——看似暴力的莫队算法
- Java面试题-朋友的面试题
- 深入Java字符串