【Python 字符串&元组&字典&集合 04】
一、字符串
字符串就是一堆子符组成一串
1、字符串的切片&反转
s='alex今天去洗脚城遇到了wusir' print(s[:4]) #切alex print(s[::-1]) #反转:risuw了到遇城脚洗去天今xela
2、字符串循环
for char in s: print(char)
3、修改大小写,关键字upper()大写,lower()小写
k='q' print(k.upper()) #upper()大写 w='W' print(w.lower()) #lower()小写
4、切割和合并,关键字:split()切割,join()合并
s = 'alex|alex3714|83' l=s.split('|') print(l) #['alex', 'alex3714', '83'] -->用|切割 w=':'.join(['alex', 'alex3714', '83']) print(w) #alex:alex3714:83 -->用:合并
5、替换 replace replace('old_str','new_str',count) count替换几个
s = 'wusir和wusir是一对儿好基友' s1=s.replace('wusir','老王') #不加替换数量,默认是全部替换 print(s1) s2=s.replace('wusir','老王',1) #写1代表替换一个,如果写2就替换两个 print(s2)
6、去除首尾内容 -->首尾都会去掉,并且是按照一个一个字符进行去掉的
s3 = '.... wa haha ....' print(s3.strip('. ')) #去除.和空格
# 在编写这样的程序时,我们经常需要在末尾加上strip() username=input('name:').strip() passwd=input('passwd').strip() if username=='wusir' and passwd =='wusir': print('success')
7、判断字符串的开始和结尾,startswith开始,endswith结尾
qq='java' ww='python' ee='php' ll=[qq,ww,ee] for i in ll: if i.startswith('c++'): print('true') if i.endswith('php'): print('false')
8、isdigit()判断字符串是不是完全由数字组成,isalpha()判断字符串是不是完全由字符组成
s1 = '12345' s2 = 'abc你好壹仟' print(s1.isdigit()) #True print(s2.isalpha()) #True
9、字符长度 len
s2 = 'abc你好壹仟' print(len(s2)) #7
二、元组 tuple -->不可变的序列,用小括号表示(元素1,元素2,元素3),注意(1)这不是一个元组,如果想表示成元组,必须在1后面加个逗号 即:(1,)
元组和列表内的方法一模一样,唯一的区别是元组内的元素不能修改,列表内的元素是可以修改的
day=('星期一','星期二','星期三','星期四') print(day[0]) print(day[:2]) for i in day: print(i) day[2]='星期日' print(day[:]) #TypeError: 'tuple' object does not support item assignment
从上面的结果可以看出来,元组可以切片也可以循环输出,但是不能修改
|--列表转换元组 tuple(list)
list1 = [1,2,3,4] tup = tuple(list1) print(type(tup)) #<class 'tuple'> print(tup) #(1, 2, 3, 4) tup.append(999) print(tup) #AttributeError: 'tuple' object has no attribute 'append'
总结:元组内的元素不能修改,不能增加,不能删除 -->即:元组内的元素是固定不变的
|-- 元组转换成列表 list(tup)
tup = (1,2,3,4) list1 = list(tup) print(list1) #[1, 2, 3, 4]
三、字典 (dict)
字典用{}表示,列表用[]表示,元组用()表示
# 取字典内的某一个值 d = { 'alex':'alex3714', 'wusir':'666', 'alex10000':'222222' } #字典的存储方式是:key:value print(d['alex']) #取alex的值,直接用 字典名['key']
不管字典有几万条数据,只要知道key,就可以直接取值,效率非常高
#利用字典编写登录
username = input('username:') passwd = input('passwd:') if username in d and d[username] == passwd: print('%s登录成功'%username) else: print('登录失败')
1、增加
2、删除 -->pop()函数 / del 字典名[key]
3、修改 -->字典名[key]=新值
4、查找 -->字典名[key] 或 字典名.get(key)
# 增 d['张三']='8888' print(d) #改 d['张三']='99999' # 如果没有就新值,有的话就修改 print(d) # 删 d.pop('alex') print(d) del d['wusir'] print(d) # 查 print(d['alex']) #alex3714
注意:字典的key是有要求的: (value是没有要求的,任何内容都可以)
- key不能重复
- key必须是可hash的 (可以通过一个哈希算法计算出一个变量的哈希值)
- 不能做字典的key (list,dict,set) -->set是集合
d = {'alex':73,123:['a','b'],(1,2,3):{'k':'v'}} d['alex'] = 125 print(d) #字符串,数字,浮点型,元组都可以做key
5、字典的循环(或者遍历)
dic = {'alex':84,123:['a','b'],(1,2,3):{'k':'v'}} # 1、遍历字典 for i in dic: print(i,dic[i]) # 2、遍历字典的key for k in dic.keys(): print(k) # 3、遍历字典的value for v in dic.values(): print(v) # 4、遍历字典的k,v -->1和4遍历的结果一样 for k,v in dic.items(): print(k,v) # alex 84 # 123 ['a', 'b'] # (1, 2, 3) {'k': 'v'} # alex # 123 # (1, 2, 3) # 84 # ['a', 'b'] # {'k': 'v'} # alex 84 # 123 ['a', 'b'] # (1, 2, 3) {'k': 'v'}
6、也可以用 get(key) 来获取value
qq={'k1':'v1'} print(qq.get('k1')) #v1 print(qq.get('k2')) #None print('k1' in qq) #True print('k2' in qq) #False
四、集合 -->集合中所有的元素约束都和字典的key相同
1、求多个集合之间的关系,并集、交集、差集(补集)
linux = {'老王','老刘','小汤','小周'} python = {'老王','老刘','小汤','老李'} # 取交集 -->即学linux又学python print(linux&python) # 取并集 -->去重 print(linux|python) # 取差集 print(linux-python) # {'老刘', '小汤', '老王'} # {'小周', '小汤', '老刘', '老王', '老李'} # {'小周'}
2、去除重复的内容
lst=[2,3,3,3,66,1,9,2,4,1] s = set(lst) print(s) #{1, 2, 3, 66, 4, 9} 集合的去重是无序的
注意:在不改变原顺序的情况下,取出一个列表当中重复的项 --不能用set集合来完成
------------------------
# 基础数据类型分类记忆一:
- 数字类型:bool int floot
- 序列类型:str tuple list --索引 切片
- 散列类型:dict set --无序的并且元素、key必须可hash
# 基础数据类型分类记忆二:
- 可变数据类型:list dict set
- 不可变数据类型:bool int float str tuple