以下部分笔记来自路飞学城教育机构学习课件
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] 2
2.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()方法可同时用于列表、字符串