一、字符串
字符串的索引
程序员数数从0开始
字符串[索引]
切片:
字符串[start:end] 从start到end拿到数据. end取不到
字符串[start:end:step] 从start到end拿数据. 每step个拿出来一个.
step:
+ 左到右
- 右到左
常用操作
字符串是一个不可变的数据类型
1. upper() 转化成大写. 在忽略大小写的时候.
name = "aleX leNb" print(name.upper()) -->ALEX LENB #lower()转化为小写
2. strip() 默认去掉左右两端的空白
name = "aleX leNb" print(name.upper())
3. replace() 字符串的替换
#将name变量对应的值中的第一个"l"替换成"p",并输出结果 name = "aleX leNb" print(name.replace("l","p",1)) -->apeX leNb
4. split() 字符串切割, 结果是列表
name = "aleX leNb" print(name.split("l"))
5. startswith() 判断是否以xxx开头
#判断 name 变量是否以 "al" 开头,并输出结果 name = "aleX leNb" print(name.startswith("al")) #endswith()判断是否以xxx结尾
6. find() 查找字符串中xxx字符的位置. 如果找不到返回-1,index()找不到则报错
name = "aleX leNb" #找不到返回-1 print(name.find("N")) #找不到则报错 print(name.index("N"))
7. len() 字符串长度
name = "alex" print(len(alex)) -->4
8.capitalize()将字符串首字母变为大写
name = "alex" print(name.capitalize()) -->Alex
9.count()统计字符串中的x出现次数
#判断name变量对应的值字母"l"出现几次,并输出结果 name = "alex lenb" print(name.count("l")) -->2 #如果判断name变量对应的值前四位"l"出现几次,并输出结果 name = "alex lenb" print(name.count("l",0,3)) -->1
二、列表
list - > 装数据的
列表使用[]表示
[]
列表也有索引和切片
增删改查(重点)
增加:
1. append() 追加, 添加在列表的末尾
2. insert() 插入, 在xxxx位置插入一个元素
3. extend() 迭代新增.合并列表
str = "alex"
lst1 = [1,2,3] lst2 = [a,b,c] lst2.extend(lst1)
lst2.extend(str)
删除:
1. pop() 删除. 指定索引删除
2. remove() 删除某个指定元素
3. del list[1:4]
4. clear() 清空列表
5. reverse()将列表所有的元素反转
修改:
使用索引去修改
查询:
直接用索引查找.
使用for循环可以遍历列表
综合:
需要记忆的魔法有:append(追加),extend(扩展),insert(插入) append 原来值最后追加,数字,字符,列表都可以进行追加 li = [6,8,7,5,8] li.append(2) # 追加再最后 原来值再后面追加,因此不用赋予新的值 print(li) clear 清空列表 li = [6,8,7,5,8] li.clear() # 清空列表 print(li) copy 拷贝(浅拷贝) li = [6,8,7,5,8] v = li.copy() # 拷贝,浅拷贝 print(li) count 计数(计算元素出现的次数) li = [6,8,7,5,8] v = li.count(8) # 计算元素出现的次数 print(v) extend 扩展原列表,参数可迭代对象(数字不能扩展,数字不可迭代) li = [6,8,7,5,8] li.extend("b") # 扩展追加。 print(li) index 根据值获取值的指引位置 li = [6,8,7,5,8] v = li.index(8) # 根据值获取值的索引位置 print(v)<br><br>1 重复字符,获取最左边位置,便不再寻找 insert 插入,也可以根据指引位置插入元素 li = [6,8,7,5,8] li.insert(2,"b") # 前面参数指定索引,逗号分隔,加要插入的元素 print(li) pop 可索引删除某个值,无索引则默认删除最后一个值,赋予一个值也可以获得被删除的值 li = [6,8,7,5,8] v = li.pop(2) # 指定索引删除,无索引则默认删除最后一个值,也可以获取删除的值 print(li) print(v) remove 删除列表指定值,左边优先 li = [6,8,7,5,8] li.remove(8) # 删除列表指定值,从左优先 print(li) reverse 将当前列表进行反转 li = [6,8,7,5,8] li.reverse() # 将当前列表进行反转 print(li) sort 排序,有秩序的排序。 li = [6,8,7,5,8] li.sort(reverse=True) # 当反转正确,则从大到小排序 print(li)
#reverse = True为降序, reverse = False为升序(默认)
join 把列表中每一项拼接起来
s = "_sb_".join(["alex", "太白", "太黑", "太绿"]) print(s) -->alex_sb_太白_sb_太黑_sb_太绿
三、元组(tuple): 不可变的列表, 只读列表
放一些不进行修改的数据
元组用()表示.
空元组必须用tuple()来创建
len(tuple) 计算元祖个数
max(tuple) 返回元祖中元素最大值
min(tuple) 返回元祖中元素最小值
tuple(seq) 将列表转换为元祖
小知识点: 如果元组只有一个元素. 必须在末尾添加一个逗号
四、字典
在存储数据的时候必须使用key:value的形式进行存储,
key不可以重复.
并且要求key必须可哈希-> 不可变(int, str, tuple, bool, float)
value没有要求
字典的增删改查:
新增:
1. 直接用新key添加
dic = {} dic["消防员"] = "值得敬佩的人" #key不可以重复,会把数据覆盖掉
2.
setdefault(key, value) 如果key存在, 不新增. 不存在, 新增. 最后都查询
删除:
1. pop(key) 指定key删除 2. popitem() 删除最后一个. 3. del dic[key] 4. clear()
修改:
dic[老key] = 新value
查询:
get(key) 使用key获取value
dic[key] 查询, 如果key不存在. 会报错
循环:
for k in dict:
直接拿到key
dict[k]
for v in dict.values():
直接拿value
for k in dict.keys():
直接拿到key
dict[k]
for k, v in dict.items():
直接拿到key, value
1 dict.clear()
删除字典内所有元素
2 dict.copy()
返回一个字典的浅复制
3 dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
print(dict.fromkeys('2', 4)) 结果为 {'2': 4} 注意: 整数不能作为Key
4 dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5 key in dict
如果键在字典dict里返回true,否则返回false
6 dict.items()
以列表返回可遍历的(键, 值) 元组数组
7 dict.keys()
以列表返回一个字典所有的键
8 dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update({'k1':'v1'} OR k1=v1)
把字典dict2的键/值对更新到dict里
10 dict.values()
以列表返回字典中的所有值
11
dict.popitem()
随机删除,并获取删除的键值以元组形式返回
五、集合set
基本数据类型特点(可变:列表,字典 不可变:字符串,数字,元组)
不同的元素组成
无序
集合中的元素必须是不可变类型,加入可变的类型会报错==
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} print(student) # 输出集合,重复的元素被自动去掉 # 成员测试 if('Rose' in student) : print('Rose 在集合中') else : print('Rose 不在集合中') # set可以进行集合运算 a = set('abracadabra') b = set('alacazam') print(a) print(a - b) # a和b的差集 print(a | b) # a和b的并集 print(a & b) # a和b的交集 print(a ^ b) # a和b中不同时存在的元素
set的方法
A、add 添加,添加可变的数据类型也是会报错的
s = {1,2,5,5,'g','h'} s.add(3) print(s)
执行结果
{1, 2, 3, 5, 'h', 'g'}
B、clear 清空集合
C、intersection 交集,相当于&
s = {1,7,9} s1 = {1,9,5} print(s&s1) print(s.intersection(s1)) {9, 1} {9, 1}
D、union 并集,相当于 |
s = {1,7,9} s1 = {1,9,5} print(s|s1) print(s.union(s1))<br><br>{1,5,7,9}<br>{1,5,7,9}
E、difference 差集,相当于-
s = {1,7,9} s1 = {1,9,5} print(s-s1) print(s.difference(s1)) {7} {7}
F、symmetric_difference 交叉补集,相当于^
s = {1,7,9} s1 = {1,9,5} print(s^s1) print(s.symmetric_difference(s1)) {5, 7} {5, 7}
G、difference-update 差集更新
H、isdisjoint 判断是否有交集
I、issubset 判断是否为子集
s1={1,2} s2={1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1)) True False
J、issuperset 判断是否为父集
s1={1,2} s2={1,2,3} print(s2.issuperset(s1)) True
k、update 更新多个值,可迭代都可传
L、pop,remove,discard 均为删除
s = {9, 'sb', 1, 2, 3, 4, 5, 6} s.pop() # pop不能指定删除,只可以随机删除 print(s) s = {9, 'sb', 1, 2, 3, 4, 5, 6} # 指定删除元素,当删除的元素不存在时,删除会报错 s.remove(4) print(s) s = {9, 'sb', 1, 2, 3, 4, 5, 6} s.discard(5) print(s) # 指定元素删除;和remove唯一的区别删除不存在不会报错