Python列表
1.list:
list是一种有序的集合,可以随时添加和删除其中的 元素。(从0开始)
['a','b','c']
[]是一个空列表,不包含任何值。类似于空字符串。
1.1用下标取值
names = ['cat','dog','rat']
a = names[0]
print(a)
索引值从0开始。
数组越界时报错IndexError
。下标是整数,如果是其他的字符或浮点数报错TpyeError
列表中可以包含其他的值,字典,列表、数字,字符等
1.2负数下标
names = ['cat','dog','rat']
a = names[-1]
print(a)
-1表示列表的最后一位。-2表示倒数第二位。
1.3使用切片取子列表
第一个整数是切片开始时的下标
第二个整数是结束时的下标,但是不包括这个值。
切片-处理部分元素a[A:B]
A:起始位置
B:最终位置(不包含)
players = ['a','b','c']
print(players[1:2])
可以省略一个值,省略第一个值为0,省略第二个为列表末尾
输入最后两个元素
print(players[-2:])
复制列表
players_new = players[:]
print(players_new)
1.4用len()取得列表的长度
列表长度
print(len(cars))
1.5用下标改变列表的值
names[0] = 'first'
print(names)
1.6列表连接和运算
+操作符 连接列表
['cat','dog','rat']+['cat','dog','rat']
*操作符 复制列表
['cat','dog','rat'] * 3
1.7 del删除值
del name[0]
2.1便利列表
for i in range(4):
print(i)
>>>0,1,2,3
遍历整个数组
for i in range(len(name)):
print(name(i))
2.2 in 和not in
'a' in ['a','b']
>Ture
'c' not in ['a','b']
>Ture
2.3多重复值
cat = ['fat','black','loud']
size,color,disposition = cat
*变量的数目和列表的长度必须严格相等,否则会报错ValueError
2.4赋值操作
a += 1 -> a = a + 1
3.0 方法
3.1index()方法
names = ['cat','dog','rat']
names.index('cat')
> 0
如果列表中不存在改值,报错ValueError
列表中有重复的值的时候,返回第一个值的下标
3.2 append()和insert()添加值
names = ['cat','dog','rat']
names.append('cat')
>['cat','dog','rat','cat']
append()添加到列表末尾
insert()可以在人意下标插入值
names = ['cat','dog','rat']
names.insert(1,'add')
>['cat','add','dog','rat']
append()和insert()是在原有的列表中操作,并不返回新的列表
3.3 remove()从列表中删除值
names = ['cat','dog','rat']
names.remove('cat')
>['dog','rat']
删除的值不存在,报错
ValueError
有多个值的时候删除第一个值
3.4 sort()方法排序
按照字母排序(永久性)
cars = ['bmw','audi','toyota']
cars.sort()
print(cars)
按照字母相反顺序排序
cars.sort(reverse = True)
print(cars)
reverse
关键字参数为True
则为逆序排序该方法不返回值为空
不能对既有数字又有字符串的数组排序,否则报错
TypeError
排序按照ASCII表,而不是实际的顺序,因此,大写字母永远在小写字母之前
如果想按照普通字符排序 应该:
cars = ['bmw','audi','toyota']
cars.sort(key=str.lower)
print(cars)
该写法讲排序时的大写字符改成小写,但不改变实际的值
3.5 Python中的缩进例外
print('aaaaaaaaaaa' + \
'bbbbbbbbbb')
\ 可以看作是‘这条指令在下一行会继续’
3.6类似的列表:字符串和元组
随机下标 random.randint(0,len(meaasges - 1))
name = 'abc'
name[0] -> 'a'
字符串不可以改变,只能重新生成新的字符串
4.0 元组
4.1 定义
eggs = ('1',2,0.5)
元组和字符串一样,是不可变的;
元组不能添加,修改,删除他们的值。
如果只有一个值,要在值末尾加上逗号
name = ('first',) -> 元组
name = ('first') -> 字符串
元组里面的数据可以重复
4.2 list()和tuple()来转换类型
4.3引用
在字符串时:
a = 100
b = a
a = 50->此时 a = 50| b =100,因为a,b是不同的变量
在列表中:
a = [1,2,3]
b = a
a[0] = 0
_>c此时: a=b = [0,1,2]。变量就是包含值的盒子,a,b都是引用,类似于指针。
变量包含对列表值的引用,而不是列表值本身;
不可变数据类型,字符串、整型,元组,保存变量值本身
4.4引用传递
在使用函数传递列表和字典时候,函数内部对列表和字典的改变会改变函数外部的值
def change(temp):
temo.append('last')
a = [1,2,3]
change(a)
——>执行完成后,a = [1,2,3,'last']
‘包含’列表的变量,实际上并未真的直接包含列表,他们包含的是列表的‘引用’(‘引用’包含ID数字)
4.5copy模块的copy()和deepcopy()函数
1.使用copy.copy()函数,可以重新生成一个可变数组,在对其进行操作,不会影响原本的值
impor copy
sapm = [1,2,3,4]
change = copy.copy(sapm)
change[0] = 'first'
__>samp = [1,2,3,4] ---change=['first',2,3,4]
copy.depcop()函数可以复制列表中包含的列表。
int('3'*2)
->33