以下部分笔记来自路飞学城教育机构学习课件 1.0 数据类型-str 1.1 字符串定义
创建
s = "Hello, my name is Alex,golden king."
字符串特性
1.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
2.
3.切片操作 (顾头不顾尾)
>>> s 'Hello, my name is Alex,golden king.' >>> s[3:6] # 顾头不顾尾 'lo,' >>> s[1:5] 'ello' >>> s[0:5] 'Hello' >>> >>> s[3:10] 'lo, my '
4.不可变,字符串是不可变的,不能像列表一样修改其中某个元素,所有对字符串的修改操作其实都是相当于生成了了一份新数据。
1.2 字符串常用操作 a = "Alex li 金角大王" #字符串
print(a.center(50, "-")) # 居中并填充 ---------Alex li 金角大王--------
print(a.count("l", 0, 4)) # 计数
print(a.endswith("王")) # 判断结尾
print(a.startswith(("Al"))) # 判断开头
print(a.find("单")) # 字符查找 返回-1代表没找到
print(a.find("角")) # 字符查找 如果找到了就返回所查字符的索引
print("22".isdigit()) # 判断是否是整数
l = ["alex", "black girl", "pig"]#列表
print("-".join(l)) #用于连接列表内的元素
# alex-black girl-pig
print(a.replace("l","M",1)) #字符串不可变 只会赋予新值 最后数字指定替换个数
# AMex li 金角大王
print(a.split("l",1))#按照指定字符(默认空格)把字符串拆成列表
# ['A', 'ex li 金角大王']
2.0 数据类型-list
2.1 定义
列表:[]内以逗号分隔,按照索引,存放各种数据类型,每一个位置代表一个元素
列表的特点:
1.可存放多个值
2.可存放多个值、按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
3.可修改指定索引位置的值,可变
2.2 列表的增加操作追加,数据会追加到尾部
>>> names['alex', 'jack']
>>> names.append("rain")
>>> names.append("eva")
>>> names['alex', 'jack', 'rain', 'eva']
插入,可插入任何位置
>>> names.insert(2,"黑姑娘") >>> names['alex', 'jack', '黑姑娘', 'rain', 'eva']
合并,可以把另一外列表的值合并进来
>>> n2 = ["狗蛋","绿毛","鸡头"] >>> names=['alex', 'jack', '黑姑娘', 'rain', 'eva'] >>> names.extend(n2) >>> names['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛', '鸡头']
列表嵌套
>>> names.insert(2,[1,2,3]) >>> names ['alex', 'jack', [1, 2, 3], '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛','鸡头'] >>> names[2][1] 22.3 删除操作
del 直接删
>>> names ['alex', 'jack', [1, 2, 3], '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛', '鸡头'] >>> del names[2] >>> names ['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛', '鸡头']
.pop 删除
>>> names ['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛', '鸡头'] >>> names.pop() #默认删除最后一个元素并返回被删除的值 '鸡头' >>> names ['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛'] >>> help(names.pop) >>> names.pop(1) #删除指定元素 'jack
.remove 删除
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛', '鸡头', 'eva']
>>> names.remove("eva") # 删除第⼀一个找到的eva值
>>> names
['alex', 'jack', '黑姑娘', 'rain', '狗蛋', '绿毛', '鸡头', 'eva']
.clear 清空
>>> n2 ['狗蛋', '绿毛', '鸡头'] >>> n2.clear() >>> n2 []2.4 修改操作
>>> names ['alex', '黑姑娘', 'rain', 'eva', '狗蛋', '绿毛'] >>> names[0] = "金⻆大王" >>> names[-1] = "银角⼤王" >>> names ['⾦⻆大王', '黑姑娘', 'rain', 'eva', '狗蛋', '银⻆大王']2.5 查操作 .index() 返回索引
>>> names
['⾦角⼤王', '黑姑娘', 'rain', 'eva', '狗蛋', '银⻆大王', 'eva']
>>> names.index("eva") #返回从左开始匹配到的第一个eva的索引
3
>>> names.count("eva") #返回eva的个数
2
在不知道一个元素在列表的哪个位置的情况下,如何修改:
1.先判断在不在列表里 item in list
2.取索引, item_index = names.index("eva")
3.去修改,names[item_index] = "铁蛋"
2.6 切片names[start : end] >>> names ['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '银角大王', 'eva'] >>> names[1:4] #不包含下标4的元素 ['黑姑娘', 'rain', 'eva']
注意:切片的特性是顾头不顾尾,即start的元素会被包含, end-1是实际取出来的值
简写
>>> n[0:4] ['alex', 'jack', ['makc', '陈xxx'], '黑姑娘'] >>> n[:4] ['alex', 'jack', ['makc', '陈xxx'], '黑姑娘']
取倒数后2个值
>>> n[0:4] ['alex', 'jack', ['makc', '陈xxx'], '黑姑娘'] >>> n[:4] ['alex', 'jack', ['makc', '陈xxx'], '黑姑娘'] >>> n[4:5] ['rain'] >>> n[4:6] # 超标写法 ['rain', 'eva'] >>> n[4:] # 省略最后⼀一个索引 ['rain', 'eva'] #
倒着切(索引正着写 顾头不顾尾 所以会少一个)
>>> names[-5:-1] ['rain', 'eva', '狗蛋', '银⻆大王'] >>> names[-5:] ['rain', 'eva', '狗蛋', '银⻆大王', 'eva']
如果取前几个值,一样可以把:号左边的省掉
>>> names['⾦角⼤王', '黑姑娘', 'rain', 'eva', '狗蛋', '银⻆大王', 'eva'] >>> names[0:3] ['⾦角大王', '黑姑娘', 'rain'] >>> names[:3] #跟上面⼀样的效果 ['金⻆大王', '黑姑娘', 'rain']
步长(跳着切)
names[start:end:step] #step 默认是1
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[0:7:2] #设置步长为2 [0, 2, 4, 6]
简写
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[::3] #按步长3打印列表,第1个:是省略掉的start:end [0, 3, 6, 9]2.7 排序&反转
排序 .sort()
>>> a = [83,4,2,4,6,19,33,21] >>> a.sort() >>> a [2, 4, 4, 6, 19, 21, 33, 83]
反转 .reverse()
>>> names ['#', '4', '@', 'eva', 'rain', '狗蛋', '⾦角⼤大王', '银⻆大王', '黑姑娘'] >>> names.reverse() >>> names ['黑姑娘', '银⻆大王', '⾦角⼤王', '狗蛋', 'rain', 'eva', '@', '4', '#']
2.8 循环列表
>>> for i in names: ... print(i) ... 黑姑娘 银⻆大王 金⻆大王 狗蛋 rain eva @ 4 #
打印列表索引 enumerate()
>>> for i in enumerate(n): ... print(i[0],i[1]) ... 0 Alex 1 alex 2 eva 3 rain 4 shit 5 ⿊黑姑娘3.0 数据类型-dict
{key1:value1, key2:value2}
info = {
"name":"Alex Li",
"age" : 26
}
key -> value
: 号左边是key,右边是value
特性:
1.key-value结构
2.key必须为不可变数据类型(字符串、数字)、必须唯一
3.可存放任意多个value(用list)、可修改、可以不唯一
4.无序、ordered_dict
5.查询速度快、且不受dict的大小影响
3.1 增加操作mes = {
"alex": [23, "CEO", 66000],
"黑姑娘": [24, "行政", 4000],
}
# 新增k
names["佩奇"] = [26, "讲师", 40000]
3.2 删除操作 .pop() / del / .clear()
names.pop("alex") # 删除指定key
del names["oldboy"] # 删除指定key,同pop方法
names.clear() # 清空dict
3.3 修改操作
dic['key'] = 'new_value' # 如果key在字典中存在, 'new_value'将会替代原来的value值;3.4 查操作
dic['key'] #返回字典中key对应的值,若key不存在字典中,则报错; dic.get(key, default = None) #返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None) 'key' in dic #若存在则返回True,没有则返回False dic.keys() #返回一个包含字典所有KEY的列表; dic.values() #返回⼀个包含字典所有value的列表; dic.items() #返回⼀个包含所有(键,值)元组的列表; # k,v 2个变量 >>> for k,v in dic.items(): ... print(k,v) ... Alex [23, 'CEO', 66000] 黑姑娘 [24, '行政', 4000] 佩奇 [26, '讲师', 40000]3.5 循环
1、 for k in dic.keys()
2、 for k,v in dic.items()
3、 for k in dic # 推荐⽤这种,效率速度最快 (k表示key,dic[k]表示value)
info = {
"name":"路飞学城",
"mission": "帮⼀千万极客⾼效学编程",
"website": "https://luffycity.com"
}
for k in info:
print(k,info[k])
输出>>>
name 路飞学城
mission 帮一千万极客高效学编程
website https://luffycity.com
3.6 求长度
len(info) # len()方法可同时用于列表、字符串



