列表(打了激素的数组)
列表相当于索引数组
#定义一个列表
arr=[1,2,3,"a","b","c"];
#获取列表中的某个元素
arr[0]
#根据值返回元素下标
arr.index(1)
#干掉某元素
arr.remove(值) #如果没有这个值,会报错
#或者
del arr[位] #del用来干掉一个数组的
如果一个列表中有相同的值,比如[1,2,3,4,1]
那么arr.remove(1),他只会干掉第一个1,不会干掉最后一个1
同理arr.index(1),只会返回0,不会返回4
如果干掉某个元素的话,比如[1,2,3,4,5]
干掉list1[1]
那么list1[1]会变成3,也就是说,下标不会随删除元素而消失,但是值会由后面的值往前填
#添加一个元素(只能添加一个)
arr.append(元素)
#合并两个列表
arr.extend(arr2)
#或者
arr+arr2 #不推荐
#PS:+左右的类型一定要一致
#还可以arr=arr*3会将里面的内容复制多2份
#将元素插入到列表
arr.insert(位,元素)
#弹出最后一个元素
a=arr.pop()
b=arr.pop(位) #弹出指定位的元素
#列表切片(即从列表中取一段)
newArr=arr[开始位:结束位] #不包含结束位
newArr=[:结束位]
newArr=[开始位:]
#获取元素个数
len(arr)
#列表的比较
list1=[123,456]
list2=[234,789]
list1>list2
#得到False,他只比较第一个元素
#判断一个元素是否存在于一个列表
# if元素 in arr
# if元素 not in arr
#列表还有很多的方法,比如排序,判断元素在列表中出现次数等,可以用
dir(list)
#来查看有哪些方法
如果列表有数字和字符串,就不可以排序
# 列表的拷贝
newArr=arr[:]
和
newArr=arr
的区别
前者是使用两个内存空间,后者是一个内存空间
列表推导式:可以动态创建列表:
[有关A的表达式 for A in B]
# 比如我想创建一个列表,里面有5各元素,每个元素是1~5的平方
list1=[i**2 for i in range(1,6)]
tuple1=[(x,y) for x in range(11) for y in range(11) if x%2==0 if y%2!=0]
# 会得到
#[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9), (10, 1), (10, 3), (10, 5), (10, 7), (10, 9)]
上面的代码相当于:
list1 = []
for x in ragne(10):
for y in range(10):
if x%2 == 0:
if y%2 != 0:
list1.append((x, y))
元组(是不可以改变的列表)
元组无法插入,删除元素,也不能排序。总之就是不能改变
#元组的定义,使用括号和逗号定义
tuple1=(1,2,3,4,5,6,7,8)
#或者
tuple1=1,2,3,4,5,6,7,8
#但是如果()中只有一个元素,那么他就不是元组
tuple2=(1)
type(tuple2)
#是一个int
#定义元组的关键不是(),而是逗号,
tuple2=(1,)
type(tuple2)
#是一个tuple
#如果真的想添加一个元素到元组中可以:
tuple=tuple[:2]+(100,)+tuple[2:]
tuple=tuple[:]+(100,)
访问元素的方式和列表一样,其他的操作都和列表一样
#元组的一个用法,可以定义多个变量
a,b,c=1,2,3
def abc():
return 1,2,3 #返回一个元组
a,b,c=abc()
但是元组是没有元组推导式的
tuple1=(i**2 for i in range(10)) #得到的不是一个元组,而是一个生成器
不过有字典推导式和集合推导式:下面的内容有点超出本节的范围,大家可以先看看
字典推导式(有下标):{下标:值(这个值是个表达式) for i in xxx}
例如:
{i:i%2==0 for i in range(10)}
# 得到:
# {0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}
集合推导式:
{i的表达式 for i in xxx}
如:
{i for i in [1,2,3,4,5,6,5,4,3,2,1]}
#得到
#{1, 2, 3, 4, 5, 6}