数值类型和进制转换;字符串、列表、元组、字典、集合相关运用

一、数值类型及进制转换

  1、int只能将字符串中包含纯数字转成整型

  2、进制转换

  #十进制转成其他进制

# print(bin(12))  # 0b1100
# print(oct(12))  # 0o14    12 => 1*(8**1) + 2(8**0)
# print(hex(12))  # 0xc
#输出结果
'''
0b1100
0o14
0xc
'''

  # 进制转换(了解**)
  # 其他进制转成十进制
    print(int('10',2))  # 2进制转
    print(int('10',8))  #8进制转
    print(int('10',16))  #16进制转

  3、可变类型与不可变类型

    可变类型:值改变的情况下,id不变,说明你改的是原值
    # 不可变类型:值改变的情况下,id一定变
    # python变量可以分为两种类型
    # 不可变类型(数值、字符串、元组
    # 可变类型(列表、字典、集合

二、字符串转换运用

  1、按索引取值(正向取+反向取) :只能取(不可修改)

  2、切片(顾头不顾尾,步长):从一个大的字符串中截取一段新的小字符串

    # 左边的固定就是头,右边固定就是位 没有说按数字来分头尾

    例:

s = 'hello'
print(s[0:5])
print(s[0:10:2])  # 步长表示隔几个取一个,步长不写默认是1
print(s[-1]) 
print(s[5:0:-1])  # 切片取值默认是从左往右的 ,了解负数取值
print(s[-1:-10:-1])
#输出结果
'''
hello
hlo
o
olle
olleh
'''

  3、len(长度):

    统计的是字符串中字符的个数
    s1 = 'hello'
    print(len(s1)) # 5

  4、in 和 not in(成员运算):

    判断一个子字符串是否存在于一个大的字符串中

  5、strip 

    去掉字符串左右两边的字符,不管中间的
    使用内置的方法统一采用 句点符(.)
    strip()默认去除字符串首尾的空格,

  6、split(切分)
    针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值
    # 强调:split切分出来的数据类型是一个列表
    # 如果不指定那么split和rsplit效果是一样

data = 'jason|123| handsome'
print(data.split('|'))
username,password,info = data.split('|')
print(username,password,info)
    
#输出结果
#['jason', '123', ' handsome']
#jason 123 handsome

        

  7. .lower()      字符串全部小写
    .upper()     字符串全部大写

  8、startswith ,endswith :判断以什么结尾和开始

  9、format的三种玩法
    第一种、按位置站位(和%s原理一直)
    例:str1 = 'my name is {} my age is {}'.format(18,'jason',)
    第二种、按索引占位
    例:str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18)
    第三种、按名道姓占位(关键字传参数)
    例:str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18)  

  10、join : 将容器类型中的多个元素通过指定字符拼接成一个字符串
    例:

res = ['jason', '123', 'handsome']
str = '$'.join(res)   
print(str)
#输出结果
# jason$123$handsome

 

  11、replace 替换字符串中的字符(可选数量)
    例:

str = 'egon is dsb and egon is sb he has a BENZ'
res = str.replace('egon','kevin',1) 
#输出结果
# kevin is dsb and egon is sb he has a BENZ

  12、isdigit    # 判断字符串中包含的是否为纯数字

    if age.isdigit():

  13、find、rfind、index、rindex、count

s = 'kevin is dsb o and kevin is sb'
print(s.find('dsb'))   # 返回的是d字符所在的索引值
print(s.find('xxx'))   # 找不到的时候不报错返回的是-1 
print(s.find('i',0,3))   # 还可以通过索引来限制查找范围
print(s.index('o'))   # 返回所传字符所在的索引值
print(s.index('i',0,5))   # 返回所传字符所在的索引值 ,  如果找不到会报错
print(s.count('n'))   # 统计字符出现的次数
#输出结果
'''
9
-1
-1
13
3
3
'''

  14、center(中间),ljust,rjust,zfill(用0补充) 用法

s9 = 'tom'
print(s9.center(12,'*'))
print(s9.ljust(6,'$'))
print(s9.rjust(6,'$'))
print(s9.rjust(6,' '))
print(s9.zfill(6))
#输出结果
'''
****tom*****
tom$$$
$$$tom
   tom
000tom
'''

  16、expandtabs 多加几个 Tab 键

s10 = 'a\tbc'
print(s10.expandtabs(10))
#输出结果
#a         bc

 

  15、captalize(首字母大写)、swapcase(大小写互换)、title(每个单词首字母大写)

s12 = 'hElLo WoRLD sH10'
print(s12.capitalize())  # Hello world 首字母大写
print(s12.swapcase())  # 大小写互换
print(s12.title())  # 每个单词的首字母大小
#输出结果
'''
Hello world sh10
HeLlO wOrld Sh10
Hello World Sh10
'''

 

  16、is 数字系列
      ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别。
      ''.isdecimal(): unicode 只识别普通的阿拉伯数字。
      ''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了

 

三、列表删减元素取值

  1、#作用:多个装备,多个爱好,多门课程,多个女朋友等

    #定义:[]内可以有多个任意类型的值,逗号分隔

    list内部原理就是for循环取值 然后一个个塞到列表中去

  2append() # 注意append值能将被添加的数据当作列表的一个元素

  3、任意位置添加元素
    # l.insert(2,10) # 通过索引在任意位置添加元素

  4、extend 添加容器类型数据

l = [11,22,33,44,55]
l1 = [99,88,77,66]
l.append(l1)   #输出 [11, 22, 33, 44, 55, [99, 88, 77, 66]]
l.insert(-1,l1)  #输出[11, 22, 33, 44, [99, 88, 77, 66], 55]
l.extend(l1)  #输出 [11, 22, 33, 44, 55, 99, 88, 77, 66] 
l.extend([1,])  #输出[11, 22, 33, 44, 55, 1]
# 内部原理for循环l1一个个追加到列表的尾部

  5、删除 .pop(2) 、 del li[2]
    del li[2] # del适用于所有的删除操作
    .pop() # 尾部弹出,也可按照索引弹出

  6、reverse 列表倒序
  sort 排序、默认情况下从小到大(升序)
  srot(reverse =true)可以通过指定参数修改默认排序(降序)

#l.sort()  排序 默认情况下是从小到大(升序)
l1 = [43,6,1,7,99]
print(l1)  # [43, 6, 1, 7, 99]
l1.sort(reverse=False)  # 可以通过指定参数来修改默认的拍讯规则(降序)
print(l1)  # [1, 6, 7, 43, 99]

  #队列  先进先出
  #堆栈  先进后出

 四、元组

  1、作用:能存多个元素,元素之间逗号隔开,元素可以是任意类型,元组不可被修改

    定义:与列表相比,只是把 [ ] 变 ( )。

  2、按索引取值(正向+反向取):只能取值 #tu([X])=
    切片(顾头不顾尾,步长)

  3、在定义容器类型的时候,哪怕内部只有一个元素,你也要用逗号隔开 区分一下。

 

 

 t1 = tuple(1)  # 报错  必须传容器类型
 n = ('a')
 n1 = (1)
 print(type(n),type(n1))  # <class 'str'>  <class 'int'>

 

  4、切片(顾头不顾尾,步长)     # print(t[::2])

    长度           # print(len(t))

    成员运算in和not in      # print('a' in t)

    循环          # for i in t:      

               # print(i)

 

五、字典

  作用:能存存储多组 key:value键值对 key是对value的描述 key通常情况下都是字符串

  其实这个key只能是不可变类型,value可以是任意数据类型

  1、按Key存取值

 

 

d3 = {'name':'jason','password':'123'}
print(id(d3))  # 31338360
print(d3['name'])  # jason
d3['age'] = 18  # 赋值语句当key不存在的情况下,会自动新增一个键值对(******)
print(d3,id(d3))  # {'name': 'jason', 'password': '123', 'age': 18} 31338360

 

  2、长度len:统计键值对的个数

  3、成员运算in和not in   对于字典来说只能判断key值

d3 = {'name':'jason','password':'123'}
print('123' in d3)  # False
print('name' in d3)  # True

  4、删除

 

 

d3 = {'name':'jason','password':'123'}
del d3['name']
print(d3)  # {'password': '123'}

d2 = {'name':'jason','password':'123'}
res = d2.pop('name')  # 弹出仅仅是value
print(res)  # jason

res = d3.pop('age')  # 当键不存在的时候直接报错
d3.clear()
print(d3)  # {}

 

  5、定义字典的三种方式

d1 = {'name':'jason','password':123}

# 掌握
d2 = dict(name='jason',password=123,age=18)  # (******)
print(d1,d2,type(d2))  # {'name': 'jason', 'password': 123} {'name': 'jason', 'password': 123, 'age': 18} <class 'dict'>

  6、键keys(),值values(),键值对items()

 

 

# 5、键keys(),值values(),键值对items()
d1 = {'name':'jason','password':123}
print(d1.keys())  # dict_keys(['name', 'password'])  老母猪
for k in d1.keys():
    print(k)  # name
print(d1.values())  # dict_values(['jason', 123])  老母猪  现在就把它当成一个列表来看即可

print(d1.items())  # dict_items([('name', 'jason'), ('password', 123)])
# 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的value

 

  7、get()根据key获取value    

d1 = {'name':'jason','pwd':123}
print(d1['name'])  # jason
# print(d1['age'])
print(d1.get('name','你给我的name在字典的key中'))  # jason
res = d1.get('age')  # 当字典的key不存在的情况 不报错 返回None
print(res)  # None
res1 = d1.get('xxx','你给我的age在字典的key中')  # 当字典的key不存在的情况 不报错 返回None
# get可以传第二个参数。当你的key不存在的情况下,返回第二个你写好的参数信息
print(res1)  # 你给我的age在字典的key中
print(d1.get('xxx','asdsad'))  # asdsad
# 第二个参数不写的话 当key不存在的情况下返回None,写了就返回写了内容

 

  8、dict.fromkeys()  快速的创建一个字典

    dict.setdefault() 尾部以元组的形式弹出键值对

l1 = ['name','password','age','hobby']
print(dict.fromkeys(l1,123))
#{'name': 123, 'password': 123, 'age': 123, 'hobby': 123}

#dict.popitem()# 尾部以元组的形式弹出键值对
# dict.setdefault()
d1 = {'name':'jason','pwd':123}
res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
print(d1,res1)  # {'name': 'jason', 'pwd': 123} jason
res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
print(d1,res2)  # {'name': 'jason', 'pwd': 123, 'age': 18} 18

    dict.update() 更新

 

 

d1 = {'name':'jason','pwd':123}
d2 = {"age":18}
# d1.update(d2)
d1['age'] = 18
d1.update(age=666)
print(d1)  # {'name': 'jason', 'pwd': 123, 'age': 666}

六、集合

   1、关系运算和去重才会用

s1 = set()
print(type(s1))  # <class 'set'>    注意在定义空集合的只能用关键字set
x = {}  # <class 'dict'>  如果你仅仅只写了一个大括号 那么python默认将它当做字典类型
print(type(x))  # <class 'dict'>
# 集合的元素遵循三个原则:
# 1:每个元素必须是不可变类型
# 可变:不可hash
# 不可变:可hash
s = {1,2,3,4,5,6,'a',(1,2),[1,2]} # 报错
s = {1,2,3,4,5,6,'a',(1,2),{"name":'jason'}} # 报错

  2、没有重复的元素

s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}
print(s)   # {1, 2, 3, 4, 5}
# 自动将重复的元素 去除

  3、无序,不支持索引取值

    平时:注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

  4、  | 合集

    & 交集

    - 差集

    ^ 对称差集(键盘shift+6)

   5、删除

    .pop()

    .remove()

    .discard()  # 使用discard和remove都可以删除set当中的元素,区别就是remove的元素在set当中没有的话会报错,而discard不会

posted @ 2019-07-03 18:38  小王八+1  阅读(326)  评论(0编辑  收藏  举报