首页 > 代码库 > python基础2
python基础2
本节内容
- 列表、元组操作
- 字符串操作
- 字典操作
- 集合操作
- 文件操作
- 字符编码与转码
一、列表、元组操作
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
定义列表
>>> name = [‘hongpeng‘,21,‘ops‘]
通过下标访问列表中的元素,下标从0开始计数
>>> name[0]
‘hongpeng‘
>>> name[-1]#可以倒着取
‘ops‘
列表操作
(1)切片:取多个元素
>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4[‘Tenglan‘, ‘Eric‘, ‘Rain‘]>>> names[1:-1] #取下标1至-1的值,不包括-1[‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘]>>> names[0:3] [‘Alex‘, ‘Tenglan‘, ‘Eric‘]>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样[‘Alex‘, ‘Tenglan‘, ‘Eric‘]>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写[‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names[3:-1] #这样-1就不会被包含了[‘Rain‘, ‘Tom‘]>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个[‘Alex‘, ‘Eric‘, ‘Tom‘] >>> names[::2] #和上句效果一样[‘Alex‘, ‘Eric‘, ‘Tom‘]
(2)追加
>>> names[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]>>> names.append("我是新来的")>>> names[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
(3)插入
>>> names[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> names.insert(2,"强行从Eric前面插入")>>> names[‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> names.insert(5,"从eric后面插入试试新姿势")>>> names[‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
(4)修改
>>> names[‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> names[2] = "该换人了">>> names[‘Alex‘, ‘Tenglan‘, ‘该换人了‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
(5)删除
>>> del names[2] >>> names[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> del names[4]>>> names[‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> >>> names.remove("Eric") #删除指定元素>>> names[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]>>> names.pop() #删除列表最后一个值 ‘我是新来的‘>>> names[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
(6)扩展
>>> names[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]>>> b = [1,2,3]>>> names.extend(b)>>> names[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
(7)copy
>>> names[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]>>> name_copy = names.copy()>>> name_copy[‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
name1 = [1,‘hongpeng‘,[‘hello‘,‘world‘,8]]#列表中可以嵌套列表name2 = name1.copy()print(name2)输出[1, ‘hongpeng‘, [‘hello‘, ‘world‘, 8]]name1 = [1,‘hongpeng‘,[‘hello‘,‘world‘,8]]name2 = name1.copy()name2[2][2] = 88print (name1)输出[1, ‘hongpeng‘, [‘hello‘, ‘world‘, 88]]
what the fuck!我明明把name2中的8替换为88,为什么name1中的8也变了????name1的值和name2的值有毛的关系啊??
原因是因为列表中如果还嵌套列表,那么copy只能copy第一层,第二层name1和name2都是共享一份数据,在内存中存在同一个地方。
想要copy之后改变name2二级列表里的值却不影响name1改怎么办呢?
只能用导入copy模块。
import copyname1 = [1,‘hongpeng‘,[‘hello‘,‘world‘,8]]name2 = copy.deepcopy(name1)name2[2][2] = 88print(name1)print(name2)输出[1, ‘hongpeng‘, [‘hello‘, ‘world‘, 8]][1, ‘hongpeng‘, [‘hello‘, ‘world‘, 88]]
哦也!!!
(8)统计
>>> names[‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]>>> names.count("Amy")2
(9)获取下标
>>> names[‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘]>>> names.index("Amy")2 #只返回找到的第一个下标
练习:
(1)
写一个列表,列表中包含本组成员 name = [‘hong‘,‘peng‘,‘alex‘,‘tom‘,‘jack‘,‘dog‘,‘cat‘,‘tiger‘]
往中间插入两个其他组成员名字 name.insert(-2,‘hello‘) name.insert(-2,‘world‘)
取出第3-6的列表 name[2:7]
删除第7个人 name.remove(‘xx‘)
把刚才加入的其他组的人一次性删除 del name[4:6]
把组长名字加上备注 name[4] = "xxxxx"
要求每隔一个取一个 print(name[0::2])[x:x:x]步长
(2)name = [0,1,2,3,3,9,9,9],把列表中的9全部替换为999
name = [0,1,2,3,3,9,9,9]if 9 in name: num_of_ele = name.count(9)#统计9的个数 for i in range(num_of_ele): position_of_ele = name.index(9)#循环得到含有9的索引 name[position_of_ele] = 999#替换9为999 print("[%s] 9 is/are in name,position:[%s]"%(num_of_ele,position_of_ele))
python基础2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。