1. 函数的可变参数

def fun(*args):print(args)

让一个函数能接受任意个参数,可以定义一个可变参数。可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数。Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

2. 切片

L = range(1, 101)         # L = [1, 2, 3, ..., 100]
print(L[0:3])             # 等同于L[:3],取列表中索引值为0, 1, 2 的元素
print(L[:])               # 从头到尾,复制一个新的L
print(L[::2])             # 也可以有三个参数,第三个参数表示每N个取一个,代表步长

把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

倒序切片:记住倒数第一个元素的索引是-1。

L = ['Adam', 'Lisa', 'Bart', 'Paul']
L[-2:]      # ['Bart', 'Paul']
L[:-2]      # ['Adam', 'Lisa']
L[-3:-1]    # ['Lisa', 'Bart']
L[-4:-1:2]  # ['Adam', 'Bart']

字符串切片:字符串 'xxx’和 Unicode字符串 u’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。

3. 迭代

在Python中,如果给定一个 list 或 tuple,可以通过 for 循环来遍历这个 list 或 tuple,这种遍历我们成为迭代(Iteration)。在Python中,迭代是通过 for ... in 来完成的。实际上,Python 的 for 循环不仅可以用在 list 或 tuple上,还可以作用在其他任何可迭代对象上。果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

索引迭代: Python中,迭代永远是取出元素本身,而非元素的索引。当需要在迭代过程中获取元素索引时,调用 enumerate() 函数。其实,索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

L = ['Baidu', 'Tencent', 'Ali']
for index, name in enumerate(L):print(index + ' - ' + name)

zip() 函数:可以把两个等长的 list 合并为一个:

for index, name in zip([10, 20, 30], ['A', 'B', 'C']):   #  [(10, 'A'), (20, 'B'), (30, 'C')]print(index + ' - ' +name)                           # 利用 zip()函数生成新列表进行迭代

迭代 dict 的 value 值: dict 对象有一个 values() 方法,这个方法把 dict 转换成一个包含所有value 的 list,这样,我们迭代的就是 dict 的每一个 value。还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样。

不过在Python 3.6之后,itervalues() 方法已经被移除。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
for item in d.values():print(item)
for item in d.itervalues():print(item)

迭代 dict 的 (key, value)值,dict 的 items() 方法把 dict 对象转换成了包含 tuple 的 list,我们对这个 list 进行迭代,可以同时获得key 和 value:

for key, value in d.items():print(key, ':', value)

4. 列表生成式

为了避免生成复杂列表太过于繁琐,python 通过一个简单的列表生成式实现:

[x * x for x in range(1, 11)]       # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

加入条件过滤:有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

def toUppers(L):return [x.upper() for x in L if isinstance(x, str)]   # isinstance(x, str) 判断x是否为字符串print toUppers(['Hello', 'world', 101])

循环嵌套:for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

print [x*100+y*10+z for x in range(1, 10) for y in range(0,10) for z in range(0, 10) if x==z]
# 利用 3 层for循环的列表生成式,找出对称的 3 位数。

Python 函数的可变参数、切片、迭代和列表生成式相关推荐

  1. Python 函数的可变参数(*paramter与**paramter)的使用

    Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...

  2. python函数中可变参数的传递方式是_Python中函数的参数传递与可变长参数

    1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0):2 printtext,num3 4 foo("asd") #asd 0 5 foo( ...

  3. python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

  4. python函数中可变参数的传递方式是_Python函数可变参数定义及其参数传递方式实例详解...

    本文实例讲述了Python函数可变参数定义及其参数传递方式.分享给大家供大家参考.具体分析如下: python中 函数不定参数的定义形式如下: 1.func(*args) 传入的参数为以元组形式存在a ...

  5. Python 函数(可变参数)

    在python函数中,可以定义可变参数,顾名思义,可变参数就是,传入的参数是可变的 例如,给定一组数字a,b,c...  请计算a2 + b2 + c2 + -- 要定义出这个函数,我们必须确定输入的 ...

  6. python函数中可变参数的传递方式_详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

  7. python 函数的可变参数

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助. 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可以是1个.2个到任意个,还可以是0 ...

  8. python切片表达式3个参数_Python:Base3(函数,切片,迭代,列表生成式)

    汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数. 我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为: 如果a只有一个 ...

  9. Python学习之路:函数传递可变参数与不可变参数

    函数传参的方法: 太基础了,8说了 直接上重点 一.可变参数的传递 可变参数有:列表.集合.字典 直接上代码: a = [1, 2]def fun(a):print('传入函数时a的值为:', a)a ...

最新文章

  1. 推荐几个微信Markdown排版工具
  2. [Head First设计模式]生活中学设计模式——迭代器模式
  3. SAP Spartacus user form页面的css设计重构
  4. laravel graphql php,结合 Laravel 初步学习 GraphQL
  5. spring boot建立项目 git推送giteee
  6. Android 数据库框架 DBFlow 的使用
  7. 快速排序多种方法代码Python
  8. 特征工程之特征预处理
  9. raiden_graph
  10. html+表格+左侧表头,HTML多表头表格代码
  11. 第一章 马克思主义哲学是科学的世界观和方法论
  12. 扛住100亿次请求——如何做一个“有把握”的春晚红包系统”
  13. 史上最详细的WinHex数据恢复大师(六大章节)视频教程
  14. pathogen插件管理器学习笔记
  15. OSS简单上传下载整理
  16. 利益相关者在敏捷项目管理中有什么用?
  17. 机器学习之信用卡欺诈检测(零基础,附数据及详细python代码2022年Tensorflow2)
  18. 【AE表达式】下载的模板表达式报错?大多数都是小问题!
  19. 【示波器专题】为什么说万用表测量直流电压比示波器精准?
  20. Springboot项目集成Minio文件服务器(下)

热门文章

  1. 【数学基础】参数估计之贝叶斯估计
  2. python数据可视化的特点_Python数据可视化, 看这一篇就够了
  3. SpringBoot基础篇Bean之条件注入之注解使用
  4. 181. maven项目ssm(父工程 子工程)
  5. 理解React-组件生命周期
  6. 四格漫画《MUXing》——度姐传说
  7. 云将与行业走向深度融合
  8. shell学习三十四天----printf详解
  9. 使用UTL_FILE在oracle中读写文本数据
  10. 深入剖析ASP.NET的编译原理之二:预编译(Precompilation)