Day2 学习python从入门到入土
列表list:一个“打了激素”的数组
列表可以同时存放不同类型(整型、字符串、浮点型...)的变量,用中括号将数据包裹起来,数据之间用逗号隔开。
1、对列表本身进行增、删、改、查
① 增
>>>[1,2,3,4,5]
>>>[520,"小甲鱼",3.14,[1,2,3]]
② 删
从列表中删除元素,可以有三种方法实现:remove()、pop() 和 del
remove():需要指定一个待删除的元素,使用remove()删除元素,并不知道这个元素在列表的具体位置,但如果指定的元素不存在与列表中,程序就会报错;
pop():参数是一个索引值,如果不带参数默认是弹出列表的最后一个元素;
del:del是一个python语句,不仅可以用来删除列表的某个(些)元素,还可以直接删除整个变量;
③ 改
append():往列表末尾添加数据,只支持一个元素;
extend():往列表末尾添加数据,可同时添加多个数据,用一个列表来扩充另一个列表,它的输入参数是另一个列表;
insert(a,b):往列表任意位置插入元素,第一个参数a指定待插入的位置,第二个参数b是待插入的元素值,a为负数时,表示与列表末尾的相对距离。
此外,在python列表中,第一个位置的索引值是0,第二个是1......
另,append()、extend()、insert() 是属于列表对象的三种方法,使用时,在实际列表对象后用"·"
④ 查
通过索引值可以直接获取列表中的某个元素,当索引值为负数时,表示从列表的末尾反向索引
random的choice方法可以从一个非空序列(如列表)中随机获取一个元素
列表中还可以包含另外的列表,如果想获取内部子列表的某个元素,应该使用两次索引
2、列表切片
列表名 [start:stop:step]
用一个冒号隔开两个索引值,start是开始位置;stop是结束位置,结束位置的元素是不包含在内的;step是步长,默认值为1,若将步长修改为-1,相当于将整个列表翻转过来。
① 如果省略开头位置,python会从0这个位置开始;eg.list1 = list1[:2]
② 如果要从指定索引值到列表末尾的所有元素,把结尾位置也省去即可;eg.list1 = list1[2:]
③ 如果只有一个冒号,python将返回整个列表的拷贝;eg.list1 = list1[:]
元组tuple:带上了“枷锁”的列表
① 元组和列表最大的区别是:元组只可读,不可写。元组只可以被访问,不能被修改,也就意味着元组中的元素不可插入或删除。
② 创建列表时用的是中括号,而创建元组大部分时候使用的是小括号,元组的标识符是逗号,小括号只是起到补充作用。
③ 如果元组中只包含一个元素,可以在元素后面添加一个逗号(,)来实现。
④ 更新和删除元组:可以利用切片和拼接实现更新元组的目的,它并不是修改元组自身,而是创建了新的元组
e.g 尝试直接修改元组
eggs = ("鸡蛋","鸭蛋","天鹅蛋","企鹅蛋","鹅蛋")
eggs[1] = "小甲鱼"
#元组中的元素是不允许被修改的,如果修改会报错
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-91-9d129e98d3af> in <module>()
1 eggs = ("鸡蛋","鸭蛋","天鹅蛋","企鹅蛋","鹅蛋")
----> 2 eggs[1] = "小甲鱼"
TypeError: 'tuple' object does not support item assignment
e.g 切片和拼接实现更新元组
eggs = ("鸡蛋","鸭蛋","天鹅蛋","企鹅蛋","鹅蛋")
eggs = (eggs[0],"小甲鱼") + eggs[2:]
print(eggs)
('鸡蛋', '小甲鱼', '天鹅蛋', '企鹅蛋', '鹅蛋')
字符串
字符串与元组一样,一旦确定下来就不能再对它进行修改,如果非要这么做,仍然可以利用切片和拼接来实现
字符串中的格式化操作符%