12-切片、迭代、列表生成式
切片
序列类型是其元素被顺序放置的一种数据结构类型,这种方式允许通过下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素。这种访问序列的方式叫做切片。
- 可以使用切片操作的数据类型:list、tuple、字符串。
- 切片操作的区间是左闭右开。
- 切片操作的操作符::[] [:] [::]
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
#取L中的前三个数据
print(L[0:3]) #['Michael', 'Sarah', 'Tracy']
#从索引 1 开始,取出 2 个元素出来:
print(L[1:3])
#倒数索引取元素:
print(L[-2:-1])
print(L[-1:])
print(L[-2:])
#原样复制
print(L[:])
#从头到尾间隔20取数
L1 = list(range(100))
print(L1[::20])
执行结果:
['Michael', 'Sarah', 'Tracy']
['Sarah', 'Tracy']
['Bob']
['Jack']
['Bob', 'Jack']
['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
[0, 20, 40, 60, 80]
迭代
给定一个list或者tuple,通过for循环来遍历这个list或者tuple、这种遍历就是迭代(iteration)。
常见的可以迭代的对象有:字符串,列表,元组,字典。
对字典迭代
d={'python':1,'php':2,'java':3}
#默认迭代的是key
print("字典默认迭代key:")
for i in d:
print(i)
print("字典自定义迭代key:")
#自定义迭代key
for key in d.keys():
print(key)
print("字典自定义迭代value:")
#迭代value
for value in d.values():
print(value)
print("字典自定义同时迭代key和value:")
#同时迭代key,value
for k , v in d.items():
print(k,v)
执行结果:
字典默认迭代key:
php
java
python
字典自定义迭代key:
php
java
python
字典自定义迭代value:
2
3
1
字典自定义同时迭代key和value:
php 2
java 3
python 1
对列表迭代
#对于一个列表
lanage=['python','php','java','c++']
# 第一种:
print("list迭代第一种方法:")
for x in range(len(lanage)):
print(x,lanage[x])
# 第二种:
print("list迭代第二种方法:")
for i ,value in enumerate(lanage):
print(i,value)
#在同一行输出:
print("list迭代同一行输出:")
for i ,value in enumerate(lanage):
print(i,value ,end=',')
执行结果:
list迭代第一种方法:
0 python
1 php
2 java
3 c++
list迭代第二种方法:
0 python
1 php
2 java
3 c++
list迭代同一行输出:
0 python,1 php,2 java,3 c++,
列表生成式
对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法是列表生成式。
# 使用列表生成式对列表数平方
b = range(1, 11)
c = [x*x for x in b]
print(c)
执行结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
带if判断
# 提取大于0的数
c = [1, 3, -3, 4, -2, 8, -7, 6]
d = [x for x in c if x > 0]
print(d)
执行结果:
[1, 3, 4, 8, 6]
多个参数
L = [m + n for m in 'ABC' for n in 'XYZ']
print(L)
执行结果:
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']