python没有数组,只有列表
列表中可以有多种数据类型的数据,列表中可以有列表,列表也可以为空。
1.1 创建列表
>>>num=[1,2,3,4,5]
>>>mix=[1,"小明",3.1415,[1,2,3]]
>>>empty[]
1.2 向列表中添加元素
列表名.append(元素)
元素添加在末尾,且只能添加一个,append是列表对象的一个方法(对象中的函数)
>>> number=[1,2,3,4,5]
>>> number.append(6)
>>> number
[1, 2, 3, 4, 5, 6]
>>>
列表名.extend([元素,元素…])
也是添加在末尾,且实际上是用一个列表来扩展另外一个列表
>>> number.extend([7,8])
>>> number
[1, 2, 3, 4, 5, 6, 7, 8]
>>>
列表名.insert(元素,位置)
往任意位置插入元素
>>> number.insert(0,0)
>>> number
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>>
如果插入位置比最后一个位置还要大,则添加在列表末尾
>>> number.insert(10,10)
>>> number
[0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
1.3从列表中获取元素
可以通过索引值(index)从列表获取单个元素
>>> name=["xiaoming",'xiaohong','xiaolv']
>>> name[0]
'xiaoming'
1.4删除元素
remove()方法 列表名.remove(元素)
删除列表中已知元素,无需知道具体位置
>>> name.remove("xiaoming")
>>> name
['xiaohong', 'xiaolv']
>>>
del语句 ,删除具体位置的元素,del不是方法,而是一个语句,del也可以删除整个元素
>>> del name[1]
>>> name
['xiaohong']
>>>
>>>> del name
>>> name
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
pop()方法 列表名. pop(元素)
pop默认弹出末尾最后一个元素,也可以弹出具体位置的元素
>>> number.pop()
8
>>> number.pop(0)
0
>>> number
[1, 2, 3, 4, 5, 6, 7]
>>>
1.5列表分片
建立原列表的部分或全部数据拷贝
列表名[起始位置:结束位置:步长],结束位置是不包含的,位置都默认为第一个元素和最后一个元素,步长默认为1,
>>> number
[0, 1, 2, 3, 4, 5, 6, 7]
>>> number[0:2]
[0, 1]
>>> number[2:]
[2, 3, 4, 5, 6, 7]
>>> number[:6]
[0, 1, 2, 3, 4, 5]
>>> number[:]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> number[::2]
[0, 2, 4, 6]
>>> number[::-1]#-1就是复制一个反转的列表
[7, 6, 5, 4, 3, 2, 1, 0]
>>>
1.6列表之间的操作
关系操作符(<,>,==),多元素列表只能比较第一个元素大小
逻辑操作符(+),(*)
>>> list1=[123]
>>> list2=[234]
>>> list1<list2
True
>>> list3=list1+list2
>>> list3
[123, 234]
>>> list4=["abc"]
>>> list3=list4+list1
>>> list3
['abc', 123]
>>> list1*3
[123, 123, 123]
>>>
成员关系操作符in和not in
>>> 123 in list1
True
>>> 234 not in list2
False
>>>
访问列表中的列表
>>> list5=[1,2,3,[1,2,3]]
>>> list5[3][1]
2
>>>
和二维数组相似
1.7列表对象的其他方法
count() 计算它的参数在列表中出现的次数
>>> list5.count(1)
1
index()返回在起始位置和结束位置中的它的参数的位置,默认为第一个字符和最后一个字符
>>> list5.index(1)
0
>>> list5.index(2,0,3)
1
>>>
reverse()将整个列表原地翻转,
>>> list5.reverse()
>>> list5
[[1, 2, 3], 3, 2, 1]
sort()用指定的方法对列表的成员进行排序,默认为从小到大
>>> list5
[3, 2, 1]
>>> list5.sort()
>>> list5
[1, 2, 3]
实际上sort()有三个参数 sort(func,key,reverse),reverse=0时,为从小到大reverse=1时,从大到小排序
>>> list5.sort(reverse=1)
>>> list5
[3, 2, 1]
>>> list5.sort(reverse=0)
>>> list5
[1, 2, 3]
1.8片分拷贝的补充
列表直接赋值给另外一个列表,它们类似共用一个空间,会同时改变
当用片分拷贝时,开辟一个新的空间,其他类型变量不会这样
>>> a=123
>>> b=a
>>> a=234
>>> b
123
>>> a
234
>>> list6=list5
>>> list6
[1, 2, 3]
>>> list5
[1, 2, 3]
>>> list4=list5[:]
>>> list5.sort(reverse=1)
>>> list5
[3, 2, 1]
>>> list6
[3, 2, 1]
>>> list4
[1, 2, 3]
2.元组
和列表的区别就是列表可以任意修改列表中的元素,可以任意插入或者删除,但是元组是不行的,元组是不可以改变的,也不能排序等
2.1创建和访问一个元组
>>>tuple=(1,2,3)#元组使用小括号
>>> tuple=()#空元组
>>>tuple=(1,)
>>>tuple=1,2,3#也可以省略小括号,但是一定要有逗号
>>> tuple=1,#也是元组
访问元组的方式和列表相同,片分也一样
>>> tuple[1]
2
>>> tuple[:]
(1, 2, 3)
>>> tuple[:1]
(1,)
2.2更新和删除元组
实际上是通过拷贝元组片段构造一个新的元组
注意,一定不能省略
>>> tuple1=tuple[:1]+("temp",)+tuple[1:]
>>> tuple1
(1, 'temp', 2, 3)
删除:
>>> tuple2=tuple1[:1]+tuple1[2:]
>>> tuple2
(1, 2, 3)
del语句可以删除整个元组
>>> del tuple2
关系操作符,逻辑操作符,和成员关系操作符也可以直接运用在元组上
3.字符串
3.1
片分也可以用在字符串上
字符串和元组性质都一样,不能改变,更新和删除方法和元组一样
>>> str1='012345'
>>> str1[1:]#片分
'12345'
>>> str1[1]
'1'
>>> str2=str1[:3]+" temp "+str1[3:]#更新删除
>>> str2
'012 temp 345'
内置函数在另外一篇写
3.2格式化
内置函数中有一个format()方法接受位置参数和关键字参数(位置参数和关键字参数均传递到一个叫做replacement字段)
>>> str4="{0} abc {1} {2}".format("a","b","c")
>>> str4
'a abc b c'
{0},{1},{2}与"a",“b”,"c"位置相匹配,所以format()的三个参数就叫做位置参数
>>> str6="{a} abd {b} {c}".format(a="a",b="b",c="c")
>>> str6
'a abd b c'
format()将参数中等值的字符串替换进去,这就是关键字参数,位置参数和关键字参数可以混合使用,但是位置参数一定要在关键字参数之前,不然会出错
>>> "{0} {1:.2f}".format("圆周率",3.14159)
'圆周率 3.14'
冒号表示格式化符号的开始 .2表示四舍五入保留两位小数
3.3格式化操作符%
4.序列
将列表,元组,字符串统称为序列,序列是可迭代对象
4.1 list()方法:将一个可迭代对象转换为列表
>>> a=list("abcde")#字符串转换为列表
>>> a
['a', 'b', 'c', 'd', 'e']
>>> b=list((1,2,3,4))#元组转换为列表
>>> b
[1, 2, 3, 4]
>>> c=list()#建立空列表
>>> c
[]
4.2 tuple()将可迭代对象转换为元组,用法与上相同
4.3 str()将obj对象转换为字符串
4.4 len() 用于返回参数的长度
4.5 max()返回序列或者参数集合中的最大值
4.6 min()返回序列或者参数集合中的最小值
4.7sum(start) 返回序列综合,默认start为0,否则从start开始
4.8 sorted(iterable,key=none,reverse=False) 返回一个排好序的新列表,sort()是实现列表原地排序
>>> a=[7,2,4,8,1,9]
>>> b=a[:]
>>> a.sort()
>>> a
[1, 2, 4, 7, 8, 9]
>>> sorted(b)
[1, 2, 4, 7, 8, 9]
>>> b
[7, 2, 4, 8, 1, 9]
4.9 reversed()返回逆向迭代序列的值,效果和reverse()效果一样,reverse()是列表原地翻转,reversed()返回一个翻转后的迭代器对象
4.10 enumerate() 生成由二元组(二元组就是元素数量为二的元组)构成的一个迭代对象,每个二元组是由可迭代参数的索引号及其对应的元素组成。
>>> for i in enumerate(a):
print(i)
(0, 1)
(1, 2)
(2, 4)
(3, 7)
(4, 8)
(5, 9)
4.11 zip(iter1,iter2,…)返回由各个迭代参数共同组成的元组
>>> a
[1, 2, 4, 7, 8, 9]
>>> b
[7, 2, 4, 8, 1, 9]
>>> c=['a','c','b','e','d','f']
>>> for i in zip(a,b):
print(i)
(1, 7)
(2, 2)
(4, 4)
(7, 8)
(8, 1)
(9, 9)
>>> for i in zip(a,b,c):
print(i)
(1, 7, 'a')
(2, 2, 'c')
(4, 4, 'b')
(7, 8, 'e')
(8, 1, 'd')
(9, 9, 'f')