首页 > temp > python入门教程 >
-
python自动化开发学习—day2 列表、元组、字典和字符串
一. 列表和元组
1.列表的定义:
names = ["wukong","bajie","shashidi"]
2.列表的访问:
通过下标访问列表中的元素,下标从零开始计算,
names[0] = "wukong"
3. 列表的切片,取多个元素,可以从左向右切片,也可以从右向左切片。
>>> 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']
4. 列表的追加
names = ["wukong","bajie","shashidi"]
names.append = "tangzhanglao"
5. 插入
names.insert(1,"小白龙") #将“小白龙强行插入到bajie前边”
6.修改
names[1] = "八戒" #将第二个元素从"bajie"修改为“八戒”
7.删除
del names[2] #删除第三个元素
names.remove("wukong") #删除指定元素
names.pop() #删除列表最后一个值
8 扩展
names = ["wukong","bajie","shashidi"]
b = [1,2,3]
names.extend(b)
print(names)
["wukong","bajie","shashidi",1,2,3]
9. 拷贝
默认使用浅copy,有四种方法
1)name_copy = names.copy()
2)name_copy1 = copy.copy(names) #需要导入copy 模块
3)name_copy2 = names[:]
4)name_copy3 = list(names) #list是python自带的内置函数
深copy使用方法
#先导入copy模块
name_deepcopy = copy.deepcopy(names)
10. 统计
names.count("bajie") #统计bajie在列表中出现的次数。
11. 排序&翻转
names.sort() # python3中不同数据类型不能放在一起排序
names.reverse() #反转
12. 获取下标
names.index("wukong")
#注意: 只返回找到的第一个下标,如果查找的元素不在列表中,运行会报错。
二. 元组
一旦创建,便不能再修改,所以又叫只读列表
1.定义
names = ("wukong","bajie","wujing")
2.它只有2个方法,一个是count,一个是index,OK。
三. 字符串
特性:不可以被修改
1 name.capitalize() 首字母大写 2 name.casefold() 大写全部变小写 3 name.center(50,"-") 输出 '---------------------Alex Li----------------------' 4 name.count('lex') 统计 lex出现次数 5 name.encode() 将字符串编码成bytes格式 6 name.endswith("Li") 判断字符串是否以 Li结尾 7 "Alex\tLi".expandtabs(10) 输出'Alex Li', 将\t转换成多长的空格 8 name.find('A') 查找A,找到返回其索引, 找不到返回-1 9 10 format : 11 >>> msg = "my name is {}, and age is {}" 12 >>> msg.format("alex",22) 13 'my name is alex, and age is 22' 14 >>> msg = "my name is {1}, and age is {0}" 15 >>> msg.format("alex",22) 16 'my name is 22, and age is alex' 17 >>> msg = "my name is {name}, and age is {age}" 18 >>> msg.format(age=22,name="ale") 19 'my name is ale, and age is 22' 20 format_map 21 >>> msg.format_map({'name':'alex','age':22}) 22 'my name is alex, and age is 22' 23 24 25 msg.index('a') 返回a所在字符串的索引 26 '9aA'.isalnum() True 27 28 '9'.isdigit() 是否整数 29 name.isnumeric 30 name.isprintable 31 name.isspace 32 name.istitle 33 name.isupper 34 "|".join(['alex','jack','rain']) 35 'alex|jack|rain' 36 37 38 maketrans 39 >>> intab = "aeiou" #This is the string having actual characters. 40 >>> outtab = "12345" #This is the string having corresponding mapping character 41 >>> trantab = str.maketrans(intab, outtab) 42 >>> 43 >>> str = "this is string example....wow!!!" 44 >>> str.translate(trantab) 45 'th3s 3s str3ng 2x1mpl2....w4w!!!' 46 47 msg.partition('is') 输出 ('my name ', 'is', ' {name}, and age is {age}') 48 49 >>> "alex li, chinese name is lijie".replace("li","LI",1) 50 'alex LI, chinese name is lijie' 51 52 msg.swapcase 大小写互换 53 54 55 >>> msg.zfill(40) 56 '00000my name is {name}, and age is {age}' 57 58 59 60 >>> n4.ljust(40,"-") 61 'Hello 2orld-----------------------------' 62 >>> n4.rjust(40,"-") 63 '-----------------------------Hello 2orld' 64 65 66 >>> b="ddefdsdff_哈哈" 67 >>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则 68 True
四. 字典
- dict是无序的
- key必须是唯一的,天生去重
语法:
info = { 'stu1101': "wukong", 'stu1102': "bajie", 'stu1103': "wujing", } 1.增加元素 info['stu1104'] = 'xiaobailong' 2. 修改 info['stu1101'] = '孙悟空' 3.删除 三种方法 info.pop('stu1101') #标准方法 del info['stu1101'] #第二种方法 info.popitem() #随机删除 4. 查找 三种方法 'stu1101' in info #标准用法,找到返回True,否则返回False info.get("stu1101") #找到返回key对应的值,否则返回None info['stu1101'] #如果不存在该key,会报错。 5. 其它方法 info.keys() info.values() info.setdefault('key','value') #如果info中没有key,则key = value, 如果info 中有key, 则key的值不变。 info.update(other dic) #两个字典info 和dic中的内容合并,key重复时使用dic中key的值。 info.iterms() #将字典转换为列表 dict.fromkeys([1,2,3],'testd') #列表[1,2,3]转换为字典,值都是testd,该方法有坑,尽量少用。 6. 循环字典
#方法1 for key in info: print(key,info[key]) #方法2 for k,v in info.items(): #会先把dict转成list,数据里大时莫用 print(k,v)
建议使用方法1, 速度快。 出处:https://www.cnblogs.com/emma20/p/13784632.html