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']
posted @ 2019-03-03 16:15  youngliu91  阅读(91)  评论(0编辑  收藏  举报