python高阶(一)——列表学习

列表 list

列表是由一系列特定元素组成的,元素和元系之间没有任何关联关系,但他们之间有先后顺序关系
列表是一种容器  列表是序列的一种  列表是可以被改变的序列

# 创建空列表的字面值
L = [] # L绑定空列表

# 创建非空列表:
L = [1, 2, 3, 4]
L = ["北京", "上海", "重庆"] 
L = [1, 'two', 3, '']
L = [1, 2, [3.1, 3.2, 3.3], 4]

 

列表的构造(创建)函数list

list() 生成一个空的列表 等同于[]
list(iterable) 用可迭代对象创建一个列表

L = list() L 为空列表,等同于 L = []
L = list("ABCD") # L->['A','B','C','D']
L = list(range(1, 10, 2))

 

列表的运算

算术运算

+   +=   *   *= 

+ 用于拼接列表

+=用于原列表与左侧可迭代对象进行拼接,生成新的列表

* 生成重复的列表

*= 用于生成重复的列表,同时用变量绑定新列表

x = [1,2,3]
y = [4,5,6]
z = x + y # z = [1,2,3,4,5,6]

x = [1,2,3]
x += [4,5,6] # x = [1,2,3,4,5,6]
x = [1,2,3]
x += 'ABC' # += 右侧必须是可迭代对象


x = [1,2,3] * 2 # x = [1,2,3,1,2,3]

x = [1, 2]
x *= 3 # x = [1,2,1,2,1,2]

 

 

列表的比较运算

运算符:<   <=   >   >=   ==   !=

x = [1,2,3]
y = [2,3,4]
x != y # True
x > [1,2] # True
x < y # True
[1,3,2] > [1,2,3] # True
['AB', 'CD'] > ['AC', 'BD'] # False
[1, 'two'] > ['two', 1] # TypeError

 

列表的 in / not in

1. 判断一个数据元素是否存在于容器(列表)内,如果存在返回True, 否则返回False
2. not in 的返回值与 in运算符相反

x = [1, 'Two', 3.14, '']
1 in x # True
2 in x # False
3 not in x # True
'' not in x # False

 

列表的 索引 index

列表的索引语句:列表[整数表达式]

用法:列表的索引取值与字符串的索引取值规则完全相同

列表的索引为分正向索引和反向索引

L = ['A', 2, 'B', 3]
print(L[1]) # 2
x = L[2] # x = 'B'

列表的索引赋值:列表是可变的序列,可以通过索引赋值改变列表中的元素
语法:列表[索引] = 表达式

x = [1,2,3,4]
x[2] = 3.14 # 改变了第三个元素的值

 

列表的切片 slice

 

列表的切片取值返回一个列表,规则等同于字符串的切片规则

x = list(range(9))
y = x[1:9:2] # y = [1,3,5,7]

列表的切片赋值语法:列表[切片] = 可迭代对象

说明:切片赋值的赋值运算符的右侧必须是一个可迭代对象

L = [2,3,4]
L[0:1] = [1.1, 2.2]
print(L) # [1.1, 2.2, 3, 4]
L = [2,3,4]
L[:] = [7,8]
L = [2,3,4]
L[1:2] = [3.1, 3.2, 3.3]
# [2,3.1, 3.2, 3.3,4]
L = [2,3,4]
L[1:1] = [2.1, 2.2] # [2, 2.1, 2.2, 3, 4]
L = [2,3,4] 
L[0:0] = [0, 1] # L=[0, 1, 2,3,4] 
L = [2,3,4] 
L[3:3] = [5,6] # L=[2,3,4, 5,6]
L = [2,3,4]
L[1:2] = []

# 切片步长不为1的切片赋值:
L = list(range(1, 9))
L[1::2] = [2.2, 4.4, 6.6, 8.8]
print(L) # 
#  切片注意事项:
#  对于步长不等于1的切片赋值,赋值运算符的右侧的可迭代对象提供元素的个数一定要等#  于切片切出的段数

L = [1,2,3,4,5,6]
L[::2] = 'ABCD' # 错的
L[::2] = 'ABC' # 对的

 

del 语句用于删除列表元素

del 列表[索引]
del 列表[切片]

L = [1,2,3,4,5,6]
del L[0] # L = [2,3,4,5,6]
del L[-1] # L = [2,3,4,5]
L = [1,2,3,4,5,6]
del L[::2] # L = [2, 4, 6]

 

列表推导式 list comprehension

列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式

作用:用简易方法生成列表

语法:[表达式 for 变量 in 可迭代对象] 或 [表达式 for 变量 in 可迭代对象 if 真值表达式]

# 以下生成一个数值为1~9的平方的列表 
L = [x*x for x in range(1, 10)]

 

# 练习:
#   用列表推导式生成 1~100内的奇数的列表
#     结果 [1,3,5,7,.... 99]

L = [x for x in range(1, 100, 2)]
print(L)

# 以上练习可以改写为:
L = [x for x in range(1,100) if x % 2 == 1]

 

列表推导式的嵌套

语法:[ 表达式1  for 变量1 in 可迭代对象1 if 真值表达式1  for 变量2 in 可迭代对象2 if 真值表达式2  ...]

L1 = [2, 3, 5]
L2 = [7, 11, 13]
# 将L1中的全部元素与L2中的全部元素依次相乘后放到列表L3中
L3 = [x * y for x in L1 for y in L2]
print(L3)

 

 列表的常用方法(其中自建函数跟字符串的差不多)

 

posted @ 2019-02-13 16:07  LeoLRH  阅读(175)  评论(0编辑  收藏  举报