#思考了几天,决定新开一个博客,把python的知识整理下
#第一篇就从python的几大容器写起,顺带一些容器的基础操作
#1.list 列表的构造函数
list() # 生成空的列表 等同于[]
list(iterable) # 用可迭代对象创建一个列表
#至于可迭代对象:就是可以把其中的东西进行操作的对象
例如:
list()
[]
list(hello)
['h','e','l','l','o']#执行结果会拆分成单个的字符串
list(range(1,10,2))
[1,3,5,7,9]
列表可以进行一些运算,但列表之间不能相乘
其中运算符:
+,+=,*, *=
+ 用于拼接列表
如:
x = [1,2,3] y = [4,5,6]
z = x + y # z = [1,2,3,4,5,6]
+= 用原列表与右侧列表拼接,并用变量绑定新列表
x = [1,2,3] y = [4,5,6]
x+=y #[1,2,3,4,5,6]
* 生成重复的列表
x=[1,2]
x*=2 #[1,2,1,2] 列表与列表不能相乘
列表间可以进行比较
比较运算符:
<,<=,>,>=,==,!=
示例:
[1,2,3] < [1,2,4] # True
[1,3] > [1,2,4] # True
[5] < [5,0] #False
列表的 in / not in 运算符
in 判断一个对象是否存在于容器内,如果存在返回True,否则返回False
用法同字符串的 in 相同
语法:
数据对象 in 容器
例如:
L = [1, 'Two', 3.3, '四']
1 in L # True
2 in L # False
3.3 in L # True
'4' not in L # True
列表的索引.索引赋值和切片及切片赋值操作
这里顺带提一下字符串,字符串的索引及切片等操作等同与列表
索引:就是找到元素的位置,第一个元素索引值为0,依次向后
若从后像前索引,则第一个元素的索引值为-1
列表的索引
语法:
列表[整数表达式]
例如:
L = [1,2,3,4]
L[2] = 3.3 # 将第三个元素赋值为 3.3
列表的切片
语法:
列表[:]
列表[::]
列表的切片取值时,返回一个列表,如l[1:3]切片取值时
只取索引值1到2的值,最后一个索引值不取
列表的切片赋值:
作用:
可以改变原列表的排序,可以插入和修改数据
可以用切片改变列表的对应元素的值
语法:
列表[切片] = 可迭代对象
注: 赋值运算符的右侧必须是一个可迭代对象
示例:
L = [2, 3, 4]
L[0:1] = [1.1, 2.2] # L = [1.1,2.2,3,4]
L = [2, 3, 4]
L[1:] = [3.3, 4.4, 5.5]#L=[2,3.3,4.4,5.5]
L = [2, 3, 4]
L[:] = [0, 1] # L = [0, 1]
L = [2, 4] # 实现中间插入 [3.1, 3.2]
L[1:1] = [3.1, 3.2] # L = [2,3.1,3.2,4]
L = [2,3,4] # 实现在前面插入[0,1]
L[0:0] = [0, 1]
L = [2,3,4] # 实现在后面插入[5,6]
L[-1:-1] = [5, 6]
L = [1,4] # 用range函数生成的可迭代对象赋值
L[1:1] = range(2,4)
L = [2,3,4]
L[1:2] = "ABCD" # "ABCD"也是可迭代对象
切片赋值注意事项:
对于步长不等于1的切片赋值,赋值运算符右侧的可迭代对象提供的元素个数一定要等于切片切出的段数
例:
L = [1,2,3,4,5,6]
L[::2] = "ABC" # 正确
# 以下切出三段,但给出5个元素填充是错的
L[::2] = "ABCDE"
L=[1,2] L[0:1]=’ab’ >>>[‘a’,’b’,2] #’ab’会被拆开
L=[1,2] L[0:1]=[’ab’] >>>[‘ab’,2] #’ab’不会被拆开
列表的del函数:
可以对列表中的元素进行删除
语法
del 序列[整数表达式]
del 序列[切片]
示例:
L = [1,2,3,4,5,6]
del L[-1] # 删除最后一个 6
del L[0] # 删除第1个 1
del L[::2] # 删除 2,4
列表还是可迭代对象它可以使用推导式
列表推导式 list comprehension
列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
作用:
用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
问题:
如何生成下列列表?
[1, 4, 9, 16, 25, .... 81]
L = []
for x in range(1, 10):
L.append(x ** 2)
列表大概就有这些内容吧,遗漏的会再补充,有错误请随时指出
最后总结:
1. 列表和字符串都是序列,元素之间有先后关系
2. 字符串是不可变的序列,而列表是可变的序列
3. 字符串中每个元素只能存储字符,而列表可以存储任意类型的元素
4. 列表和字符串都是可迭代对象