【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',countcount替换几个

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

 

posted @ 2022-04-07 15:14  尘封~~  阅读(21)  评论(0编辑  收藏  举报