Python:list列表

列表 list

列表 list
	列表是一种容器
	列表是可以被改变的序列容器

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

创建非空列表的字面值:
	L = [1, 2, 3, 4]
	L = ["北京", "上海", "深圳"]
	L = [1, "二", 3.14, "Four"]
	L = [1, 2, [3.1, 3.2, 3.3], 4]

列表的构造(创建)函数 list
	list()         创建一个空的列表,等同于[]
	list(iterable)  用可迭代对象创建一个列表
示例:
	L = list()  # L绑定空列表
	L = list("hello")  #L绑定['h','e','l','l','o']
	L = list(range(10))  # L绑定[0,1,2,3...9]

**列表的运算:**
	算术运算符
	+  +=  *   *= 
示例:
	+ 加号用于拼接列表
  	x = [1, 2, 3]
  	y = [4, 5, 6]
  	z = x + y  # z = [1, 2, 3, 4, 5, 6]
	+= 用于原列表与右侧可迭代对象进行拼接,用变量绑定列表
语法:
    x += 可迭代对象
如:
    x = [1, 2, 3]
    y = [4, 5, 6]
    x += y  # x绑定[1, 2, 3, 4, 5, 6]
    x = 
* 生成重复的列表
*=  让原列表重复n次再用原变量绑定
 	 x = [1, 2] * 3  # x =[1, 2, 1, 2, 1, 2]
 	 x = [1, 2]
  	x *= 2  # x = [1, 2, 1, 2]
  	列表的比较运算:
运算符:
  <  <=  >  >=  ==  != 
说明:
  列表的比较规则与字符串的比较规则相同
  列表要求每两个元素能依次进行比较,否则会出现类型错误
示例:
  [1, 2, 3]  < [1, 2, 4]  # True
  [1, 2, 3] != [1, 2, 4]  # True
  ["One", "Two"] < ["1", "2"]  # False
  [1, 'Two'] > ['Two', 1]  # TypeError
  [1, "二", 3.14] < [2, "2", 1]  # True

列表的in / not in 运算符

判断一个值是否存在于列表中,如果存在则返回True,
否则返回False
同字符串的 in 运算符类似

示例:
	x = [1, 'Two', 3, "四"]
	3 in x       # True
	"3" in x     # False
	10 not in x  # True

列表的索引操作:

	索引取值
语法:
	x = 列表[整数表达式]
用法:
 	等同于字符串的索引(同样分为正向索引和反向索引)

索引赋值
	列表是可变的序列,可以通过索引赋值改变列表中的元素

语法:
	列表[整数表达式] = 表达式
示例:
	x = [1, 2, 3, 4]
	x[2] = 1 + 2.14  # 改变了第三个元素的值
	print(x)  

列表的切片操作

切片取值
列表[起始索引:终止索引:步长]
列表的切片取值是从原列表中取出想要的元素再次组成一个
新的列表
示例:
	 L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 	 y = L[1:10:2]  # y = [1, 3, 5, 7, 9]

**切片的赋值操作**
作用:
	可以改变原列表的排列,可以插入,和修改数据
语法:
	列表[切片] = 可迭代对象
说明:
	切片赋值的赋值运算符(=)的右侧必须是一个可迭代对象
示例:
	L = [2, 3, 4]
	L[0:1] = [1.1, 2.2]  # L=[1.1, 2.2, 3, 4]
	L[0:2] = [2]  # L = [2, 3, 4]
	L[1:2] = [3.1, 3.2]  # L = [2, 3.1, 3.2, 4]

	L = [2, 3, 4]
	L[1:1] = [2.1, 2.2]  # L = [2, 2.1, 2.2, 3, 4]
	L[0:0] = [0, 1]  # L = [0, 1, 2, 2.1 ....]
	L = [2, 3, 4]
	L[3:3] = [5, 6]  # L = [2, 3, 4, 5, 6]

	L = [2, 3, 4]
	L[1:2] = "AB" # L = [2, 'A', 'B', 4]
	L[1:3] = range(7, 10)  # L = [2, 7, 8, 9, 4]

**切片的注意事项:**
	对于步长不等于1的切片赋值,赋值运算符的右侧的可迭代对象
提供的元素的个数,一定要等于切片切出的段数

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

del 语句

可以用于删除列表的元素
语法:
	del 列表[整数表达式]
	del 列表[切片]
示例:
	L = [1, 2, 3, 4, 5, 6, 7, 8]
	del L[-1]  # L = [1, 2, 3, 4, 5, 6, 7]
	del L[1::2] # L = [1, 3, 5, 7]

python中常用于的序列的函数

len(x)  返回序列的长度
max(x)  返回序列的最大值元素
min(x)  返回序列中最小值元素
sum(x)  返回序列中所有元素的和(元素必须是数字类型)
any(x)  真值测试.如果列表中的一个值为真值则返回True
all(x)  真值测试.如果列表中所有的值为真值则返回True

示例:
	L = ["Beijing", 1, 123]
	print(len(L))  # 3
	L = [8, 3, 6, 2]
	print(max(L))  # 8
	print(min(L))  # 2
	print(sum(L))  # 19

列表常用的方法:

L.append(x)  追加
L.insert(索引, 数据对象)
L.extend(可迭代对象)
L.remove(数据对象)
L.pop([整数索引])
L.clear() 
L.count(数据对象) 
L.index(数据对象) 返回第一次出现的位置
L.sort(reverse=False)  排序
L.reverse()   反转

列表与字符串比较:

1. 列表和字符串都是序列,元素之间有先后顺序关系
2. 列表和字符串有相同的操作: + += * *= < > in ...
3. 字符串是不可变化的序列,列表是可变的序列
4. 字符串的每个元素只能存储字符,而列表可以存储任意类型
	的元素
5. 列表和字符串都是可迭代对象

字符串的文本解析方法 split 和join

S.split(sep=None)  将字符串使用sep作为分隔符分割s
       字符串,返回分割后的字符串列表;当不给定参
       数时,用空白字符作为分隔符
S.join(iterable)  用可迭代对象中的字符串生成一个中
       间用S进行分隔的字符串
示例:
	s = 'Beijing is Capital'
	L = s.split(' ')   # L = ['Beijing', 'is', 'Capital']
	s2 = "##".join(L)  # s2 = "Beijing##is##Capital"

列表推导式 list comprehesion

列表推导式是用可迭代对象创建列表的表达式
作用:
	创建列表
	语法:
		[ 表达式 for 变量 in 可迭代对象]
或
		[ 表达式 for 变量 in 可迭代对象 if 真值表达式]
示例:
	生成一个数值为1~9的平方的列表
  	L = [x**2 for x in range(1, 10)]
	# L = [1, 4, 9, 16 .... 64, 81]
	# 生成一个数值1~9的平方的列表(只要其中奇数的平方)
	L = [x**2 for x in range(1, 10) if x % 2 = = 1]
	# L = [1, 9, 25, 49, 81]
	以上列表推导式可以改写为:
	L = []
	for x in range(1, 10):
    	if x % 2 == 1:
        	L.append(x**2)

列表推导式的嵌套语法:

[ 表达式
    for 变量1 in 可迭代对象1 if 真值表达式1
        for 变量2 in 可迭代对象2 if 真值表达式2
            .....]
如:
L = [x + y for x in "ABC" for y in "123"]
# L = ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 
        'C1', 'C2', 'C3']

猜你喜欢

转载自blog.csdn.net/qq_43494793/article/details/83447180