python基础四_函数,切片,迭代
2017-07-24 16:05
441 查看
一.函数
函数返回多个值时,其实是返回一个tuple(如return nx, ny,其实是返回的是(nx,ny))
函数的参数改为可变参数
def calc(*numbers):
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:
>>> calc(1, 2)
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。
关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
二.切片
用于取一个list或tuple的部分元素
如果第一个索引是
L[ : 3]
从索引1开始,取出2个元素出来
L[1 : 3]
Python支持
L[ -2 : ]
L[-2 : -1]
前10个数,每两个取一个:
所有数,每5个取一个:
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
字符串也是同样的道理,可以进行相应的切割。
三.迭代
如果给定一个list或tuple,我们可以通过
通过for . . . in 可遍历整个list或tuple
Python的
dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。
默认情况下,dict迭代的是key。如果要迭代value,可以用
由于字符串也是可迭代对象,因此,也可以作用于
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
如果要对list实现类似Java那样的下标循环怎么办?Python内置的
上面的
函数返回多个值时,其实是返回一个tuple(如return nx, ny,其实是返回的是(nx,ny))
函数的参数改为可变参数
def calc(*numbers):
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:
>>> calc(1, 2)
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。
关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
二.切片
用于取一个list或tuple的部分元素
L[0:3]表示,从索引
0开始取,直到索引
3为止,但不包括索引
3。即索引
0,
1,
2,正好是3个元素。
如果第一个索引是
0,还可以省略:
L[ : 3]
从索引1开始,取出2个元素出来
L[1 : 3]
Python支持
L[-1]取倒数第一个元素,那么它同样支持倒数切片
L[ -2 : ]
L[-2 : -1]
前10个数,每两个取一个:
>>> L[:10:2] [0, 2, 4, 6, 8]
所有数,每5个取一个:
>>> L[::5] [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
>>> (0, 1, 2, 3, 4, 5)[:3] (0, 1, 2)
字符串也是同样的道理,可以进行相应的切割。
三.迭代
如果给定一个list或tuple,我们可以通过
for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
通过for . . . in 可遍历整个list或tuple
Python的
for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上
dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。
默认情况下,dict迭代的是key。如果要迭代value,可以用
for value in d.values(),如果要同时迭代key和value,可以用
for k, v in d.items()。
由于字符串也是可迭代对象,因此,也可以作用于
for循环:
>>> for ch in 'ABC': ... print(ch) ... A B C
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
>>> from collections import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False
如果要对list实现类似Java那样的下标循环怎么办?Python内置的
enumerate函数可以把一个list变成索引-元素对,这样就可以在
for循环中同时迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']): ... print(i, value) ... 0 A 1 B 2 C
上面的
for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:
>>> for x, y in [(1, 1), (2, 4), (3, 9)]: ... print(x, y) ... 1 1 2 4 3
相关文章推荐
- python基础2(dict—set—函数—切片—迭代—列表range)
- Python3 基础:高级特性-切片和迭代
- Python 函数 切片 迭代 列表生成器
- Python基础-切片与迭代
- python 语言基础之切片,迭代
- Python入门 第三天(set、函数、切片、迭代、列表生成式)
- python基础之切片、迭代和列表生成式
- python入门-函数、切片、迭代
- Python中(Dict和Set类型、函数、切片 、迭代 )
- Python学习 Day 4 函数 切片 迭代 列表生成式 生成器
- python基础IV(切片、迭代、生成列表)
- Python基础-切片和迭代
- Python3.X基础语法(数据类型/对象引用/组合数据类型/逻辑操作符/控制流语句/算数操作符/输入输出/函数创建和引用)001
- 深入解析Python中的list列表及其切片和迭代操作
- python语法基础归纳(3)--函数
- Python基础(5)——函数的执行,调用,嵌套
- Python基础:函数(一)
- python基础2之高阶函数
- python 基础知识回顾篇之简单迭代和列表生成
- Python基础:10函数参数