`
_wyh
  • 浏览: 61032 次
社区版块
存档分类
最新评论

python的切片,迭代,列表生成式

阅读更多

python的代码需要有优雅,明确,简单的特性。代表着需要代码越少越好,越简单越好。为此,python提供了许多高级特性,如切片,迭代,列表生成式等等,可以有效的用简单代码实现复杂功能。

 

参考资料:廖雪峰官方网站http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317568446245b3e1c8837414168bcd2d485e553779e000

1,切片

适用类型:list, tuple, str

切片功能简单说就是实现截取,不管是列表list,不可变列表tuple还是字符串str,使用切片可以使代码更简单。

    (1)list

li = ['0', '1', '2', '3', '4', '5', '6']
print(li[1:3])
print(li[:2])
print(li[3:])
print(li[-5:-3])
print(li[-5:])
print(li[::2])

   结果为:

['1', '2']
['0', '1']
['3', '4', '5', '6']
['2', '3']
['2', '3', '4', '5', '6']
['0', '2', '4', '6']

    li[1:3] : 从list的索引1开始取,取到索引3停止,不包括索引3

    li[:2] : 从头取,取到索引2停止,不包括2

    li[3:] : 从索引3一直取到最后

    li[-5:-3] : 从索引-5取到索引-3,不包括索引-3

    li[-5:] : 从索引-5取到最后

    li[::2] : 从头取到尾,每2个元素取一个中间隔一个

 

    (2)tuple

    tuple本身就是一种list, 而它的切片操作与list切片操作相同,只是得到结果依然是不可变的tuple

tup = ('0', '1', '2', '3', '4', '5')
print(tup[2:])
print(tup[:4])
print(tup[1::3])

   结果为:

 ('2', '3', '4', '5')
 ('0', '1', '2', '3') 
 ('1', '4')

 

 

    (3)str

    str的切片操作是对每个字符的截取,其它与list和tuple切片相同

string = '012345'
print(string[2:])
print(string[:4])
print(string[1::3])

    结果为:

2345
0123
14

 

 

 

2,迭代

适用类型:list, tuple, str, dict

python中可迭代的类型为Iterable类型。比如list, tuple, str等

 

python的for循环抽象程度比较高,不光是列表list和tuple可以迭代,字符串和字典也可以。

    (1)list, tuple

li = ['zero', 'one', 'two', 'three', 'foul', 'five', 'six']
for value in li:
    print(value)

     结果为:

zero
one
two
three
foul
five
six

    类似于forEach,不能获取每次迭代的索引,只获取迭代数值

 

  

for index, value in enumerate(li):
    print(index, value)

     结果为:

0 zero
1 one
2 two
3 three
4 foul
5 five
6 six

    enumerate()函数可以把list变成索引-元素这种形式,从而可以在for循环中同时获取索引和数值

 

 

for index in range(len(li)):
    print(index, li[index])
# 同样可以获取上面的结果

 

 

    (2)dict

dic = {'one': 1, 'two': 2, "three": 3}
for key in dic:
    print(key)

       结果为:

two
three
one

    直接迭代字典,每次获取的元素是字典的key

 

 

for value in dic.values():
    print(value)
1
3
2

    迭代字典的所有数值,用来获取每次迭代的数值。

 

for key, value in dic.items():
    print(key, value)
one 1
three 3
two 2

 

for value in dic.items():
    print(value)
('two', 2)
('three', 3)
('one', 1)

 

 

 

    (3)str

    字符串的迭代迭代的是字符串的每一个字符

string = '012345'
for value in string:
    print(value)
0
1
2
3
4
5

  

 

3,列表生成式

使用类型:可以迭代的类型

列表生成式可以进一步简化代码。

 

列表生成式返回的是数组, for前面的表达式可以代替for中的return

a = [x * x * x for x in range(0, 11)]
print(a)

    得到0-10中每个数的立方所组成的数组

[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

  

b = [x * x * x for x in range(0, 11) if x % 2 == 0]
print(b)

    得到0-10中每个偶数的立方所组成的数组

[0, 8, 64, 216, 512, 1000]

 

a = [1, 2, 3, 4, 5, 6]
b = [4, 5]
c = [x * y for x in a if x % 2 == 0 for y in b]
print(c)

    可以得到a中的每个偶数和b中的每个数相乘的结果组成的数组

 [8, 10, 16, 20, 24, 30]

 

a = {'a': 'b', 'c': 'd', 'e': 'f'}
b = [key + value for key, value in a.items()]
print(b)

    可以得到字典a中每个元素的key与value相加的结果得到的数组

['ab', 'cd', 'ef']

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    Python3.5迭代器与生成器用法实例分析

    首先,**列表生成式**是创建列表的一种简洁方式。通过在for循环中嵌套表达式,我们可以快速生成符合特定条件的列表。例如: ```python a = [i*2 for i in range(10)] ``` 这段代码会生成一个包含0到18之间偶数的...

    第十章Python列表习题及答案--中文

    9. 列表的生成式:Python列表支持生成式,用于快速生成一个列表。例如,list1 = [x for x in range(5)],list1 = [0, 1, 2, 3, 4]。 10. 列表的应用:Python列表广泛应用于数据分析、机器学习、Web开发等领域,用于...

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

    Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。 2. 切片 L = range(1, 101) # L = [1, 2, 3, ..., 100] print(L[0:3]) # 等同于L[:3],...

    廖雪峰python3 完整带索引,图片 最新教程 pdf版

    列表生成式 生成器 迭代器 函数式编程 高阶函数 map/reduce filter sorted 返回函数 匿名函数 装饰器 偏函数 模块 使用模块 安装第三方模块 单元测试 文档测试 IO编程 文件读写 StringIO和BytesIO 操作文件和目录 ...

    练习作业_python_源码

    "练习作业_python_源码"这个压缩包文件包含了四个关键的Python编程概念:迭代器、生成器、切片操作以及列表生成式。这些都是Python中非常基础且重要的特性,对于初学者来说,理解和掌握它们是成为熟练Python程序员的...

    python数据分析列表.zip

    5. **列表解析与生成器表达式**:除了列表推导式,还有更高效的生成器表达式,它不会立即创建整个列表,而是在需要时生成每个元素,如`(x*2 for x in my_list if x > 1)`。 6. **列表的深拷贝与浅拷贝**:在处理...

    Python 高级特性

    文章目录Python 高级特性切片迭代列表生成式生成器 generator迭代器 切片 可以对list, tuple, string进行切片 [起始位置:终止位置 + 1: 步长] 可以使用负数,-1为倒数第一个数 步长为负数时,从后向前分隔,对应的...

    Python 难点重点学习笔记

    Python学习过程中,遇到的python...高级特性,包括切片、列表生成式,生成器、迭代器,函数式编程,包括高级函数、map、reduce、filter、sorted;返回函数、匿名函数、偏函数、装饰器的深入理解。面向对象高级编程等。

    python源码列表处理技术

    - 使用列表切片与循环、条件判断结合来快速筛选或生成新列表。 6. 列表与其他数据结构的转换: - 将字符串分割成列表,使用split()方法。 - 将列表合并成字符串,使用join()方法。 - 将元组、字典等其他可迭代...

    python程序设计课件pdf版

    创建列表有很多种方式,如直接用中括号定义、使用`list()`函数转换其他可迭代对象,或使用列表推导式生成满足特定条件的列表。列表的访问和删除主要通过索引操作,索引从0开始,从右向左索引为负数。 列表还提供了...

    C语言中文网Python教程

    “4.7Python list列表使用技巧及注意事项.html”涵盖了Python列表的常见操作,如添加元素、删除元素、切片、排序等,同时提醒了列表作为可变对象的一些潜在问题。 “8.21Python super()使用注意事项.html”讨论了...

    Python基础入门教程.zip

    课程简介: 第一课 入门基础 Python简介 为什么选择Python 环境搭建 如何学好编程 常用关键字 ...第5课 文件访问与函数式编程入门 第6课 高级面向对象 第7课 并发编程以及系统常用模块 第8课 常用第三方模块

    Python语言中列表方法的探索.zip

    11. **列表和元组的相互转换**:`list()`函数可以将元组或其他可迭代对象转换为列表,而`tuple()`函数可以将列表转换为元组。 12. **深拷贝与浅拷贝**:列表的浅拷贝仅复制列表本身,不复制嵌套的对象引用。如果...

    超级实用的8个Python列表技巧

    Python中的切片操作可以轻松地翻转列表。使用`[::-1]`,可以将列表中的元素顺序反转。 5. **检查列表中元素的存在情况** `in`运算符可以用来检查一个元素是否存在于列表中,这在查找特定元素时非常方便。 6. **...

    python3完整版

    高级特性中包括了切片、迭代、列表生成式、生成器和迭代器等概念。Python对函数式编程的支持,如map、reduce、filter和sorted函数,也被详细讲解,这些是Python强大编程能力的体现。 IO编程是任何应用程序都不可或...

    廖雪峰python教程打印版(完整版)(.pdf)

    这一部分包括了切片、迭代、列表生成式、生成器和迭代器等内容。切片是Python中操作序列的一种简洁方式,类似于其他编程语言中的数组切片。迭代涉及遍历序列中的元素,列表生成式则是一种根据已有列表生成新列表的...

    廖雪峰的Python 3教程——排版完美

    进阶特性部分则深入讲解了Python的高级特性,例如切片操作、迭代器和生成器、列表生成式、高阶函数、map/reduce、filter、sorted函数、匿名函数、装饰器、偏函数等。这些特性是Python强大功能的体现,也是其区别于...

    Python经典题目100道题_python基础100道_python_经典python题目_

    7. **列表推导式与生成器**:理解这两种高效的数据生成方式,它们可以简化代码并优化内存使用。 8. **字符串处理**:熟悉字符串的索引、切片、格式化输出,以及各种字符串方法,如split()、join()、strip()等。 9....

    python学习资料和课件,python教学课件,Python

    1. **列表(List)**: Python中最常用的数据结构之一,可以存储任意类型的元素,支持索引访问、切片、增删改查操作,以及列表推导式。 2. **数据结构的常用操作**: 如append()、extend()、insert()、remove()、pop...

    python列表定义方式.docx

    列表推导式是一种简洁且强大的定义列表的方式,可以在一行代码中根据现有列表生成新列表。例如,要将列表中的每个元素都平方,可以这样做: ```python original_list = [1, 2, 3, 4, 5] squared_list = [x ** 2 ...

Global site tag (gtag.js) - Google Analytics