Python day8:基本数据类型及内置方法2

一、字符串剩余:(均为了解)
1、find,rfind,index,rindex,count
index与find的使用一样,不同在于find若未找到会返回-1,index未找到直接报错。尽量用find来操作,保护软件的稳定性。

x = "hello egon egon egon"
res=x.find("egon")
print(res)
res=x.find("egon123") # -1代表没有找到
print(res)
----------------------------------
6
-1

res=x.rfind("egon")
print(res)
---------------------------
16

res=x.find("egon",0,3)
print(res)
------------------------------
-1

res = x.index("egon123") # 找不到则报错
print(res)
----------------------------------------------
    res = x.index("egon123") # 找不到则报错
ValueError: substring not found

2、center,ljust,rjust,zfill

x = "yang"
res=x.center(50,'*')
print(res)
-----------------------------------------------------------------
***********************yang***********************

print(x.ljust(50,"*"))
print(x.rjust(50,"*"))
print(x.zfill(50))
print(x.rjust(50,"0"))
----------------------------------------------------------------------------
yang**********************************************
**********************************************yang
0000000000000000000000000000000000000000000000yang
0000000000000000000000000000000000000000000000yang

3、expandtabs

print("hello\tworld".expandtabs(1))
------------------------------------
hello world

4、captalize,swapcase,title

print("hello world".capitalize())  # 使第一个字符大写
print("aBcDeF".swapcase())  # 大小写发转
print("hello world".title())  # 每个单词的首字母大写,若一些英文文章的题目有这方面的格式要求
---------------------------------
Hello world
ABcdEFg
Hello World

5、is其他

name='egon123'
print(name.isalnum()) #字符串是否由字母或数字组成
print(name.isalpha()) #字符串是否只由字母组成

name="aaainputbbbbb"
print(name.isidentifier()) # 如果字符串是有效标识符,则 isidentifier() 方法返回 True,否则返回 False。

name="abc123"
print(name.islower())  # 判断字符串是否全小写
print(name.isupper())  # 判断字符串是否全小写

name="     "
print(name.isspace())  # 判断字符串是否全空格

name="My Name Is Egon"
print(name.istitle())  # 判断字符串是否符合标题格式

6、is数字系列

# 在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字

#1、 isdigit判断是否为纯数字字符串(浮点型因为有小数点,不算纯数字)
# bytes、unicode可判断为True,中文与罗马数字判断为False
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
-------------------------------------
True
True
False
False

#2、isnumeric检测变量是否为数字或数字字符串
# unicode、中文数字、罗马数字判断为True,bytes类型无此方法
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())

#3、isdecimal 判断字符串是否只有十进制字符串组成这种方法只存在于unicode对象,注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())

字符串型总结:
1.存一个值
2.有序
3.不可变类型
二、列表类型,list型
1.用途:按照索引存放多个值,可存放任意类型,索引反映位置
2.定义:在[ ]内用逗号分割开多个任意类型的元素

l = [1,2,'hello',[3,4]]

数据类型转换:

res1=list("hello")
print(res1)
res2=list({"k1":1,"k2":2,"k3":3})
print(res2)
-------------------------------------
['h', 'e', 'l', 'l', 'o']
['k1', 'k2', 'k3']

3.常用操作与内置方法:
3.1 优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可以取可以改值,不能加值

l1 = [11,22,33,44,55]
print(l1[0])
print(l1[-1])
print(id(l1))
l1[0] = 100
print(id(l1))
l1[4] = 11111
--------------------------
11
55
1133439007104
1133439007104

2、切片(顾头不顾尾,步长)

l1 = [11,22,[66,77]]
res=l1[2:4]
print(res)
print(l1)

2.1 浅copy:了解

l2=l1[:]
l2=l1.copy()

print(id(l1[0]),id(l1[1]),id(l1[2]))
print(id(l2[0]),id(l2[1]),id(l2[2]))

l1[0] = "aaa"
l1[1] = "bbb"
l1[2] = "ccc"
l1[2][0] = 8888

print(l2)

from copy import deepcopy
l3=deepcopy(l1)
print(id(l3[0]),id(l3[1]),id(l3[2]))

l1[2][0]=6666
print(l1)
print(l3)

# 示范1:
l1[0]=1000
print(l1)
print(l2)

# 示范2:
l1[-1][0]=666
print(l1)
print(l2)

# 了解:
res=l1[-1:-4:-1]
res=l1[::-1]
print(res)
列表类型浅拷贝.jpg

3、长度

l1 = [11,22,[66,77]]
print(len(l1))

4、成员运算in和not in

l1 = [111,22,[66,77]]
print([66,77] in l1)
print(66 in l1)
print(66 not in l1)

5、追加

方法一、append,在列表最后追加元素,且括号内会被视为一个元素,若加入列表,则直接追加列表,不会取出列表中的值再追加
l1=[11,22]
l1.append(33)
l1.append(44)
l1.append([55,66])
--------------------------------
[11, 22, 33, 44, [55, 66]]

方法二、insert在指定位置加入元素,将原来位置的元素挤到后一个位置
l1 = [11,22,[66,77]]
l1.insert(0,'新元素')
print(l1)
-----------------------------
['新元素', 11, 22, [66, 77]]
l1 = [11,22,[66,77]]
l1.insert(1,'新元素')
print(l1)
----------------------------------
[11, '新元素', 22, [66, 77]]

6、删除
6.1 万删除,没有返回值,代表的是单纯的删除

l1=[11,22,[33,44]]
del l1[0]
print(l1)
del l1[1]
print(l1)
-----------------------------
[22, [33, 44]]
[22]

6.2 指定元素删除,不是按照索引删除,返回值为None(代表无返回值),代表的是单纯的删除

l1=[11,22,[33,44]]
res = l1.remove(11)  # 指定11这个元素删除,不是按照索引删除
print(res)
print(l1)
----------------------------------
None
[22, [33, 44]]

6.3 指定索引删除,有返回值,代表的是取走操作

l1=[11,22,[33,44]]
res = l1.pop(0)
print(res)  # 返回值是自己取走的元素
print(l1)
--------------------------
11
[22, [33, 44]]

7、循环

l1=[11,222,[1,2]]
for x in l1:
    print(x)

3.2 需要掌握的操作:
1、clear,全清空

l1=[11,22,333,333,333,]
l1.clear()
print(l1)

2、count,计算某个字符出现次数

l1=[11,22,33,33,33]
print(l1.count(33))  # 计算33这个字符出现了几次
------------------

3、extend,有l1,l2两个列表,将l2列表的元素取出加入l1中

方法一、直接用extend
l1 = [11,22,33]
l2 = [44,55,66]
l1.extend(l2)
print(l1)
------------------------
[11, 22, 33, 44, 55, 66]

方法二、用for循环,将l2的值取出来,再用append追加
l1 = [11,22,33]
l2 = [44,55,66]
for i in l2:
    l1.append(i)
print(l1)
------------------------
[11, 22, 33, 44, 55, 66]

4.列表类型index方法使用:list.index(x[, start[, end]]),顾头不顾尾

l1=[11,22,33,33,33,44]
res1=l1.index(33,0,2)  # 直接报错,在索引0-2(不包括2)中没有33元素
res2=l1.index(44)
print(res2)
----------------------------------
5

5.reverse:列表反转
面试题
让列表反转的两种方法:

方法一、使用reverse
l1=[11,22,"aaa",'bbb']
l1.reverse()
方法二、利用列表切片
l1=l1[::-1]  # 两个:不能省略
print(l1)

6.sort 排序,默认从小到大,中间加入reverse=True可变成从大到小
字符串与整型之前无法比较,可以比较整型与浮点型,字符串与字符串可以比较

字符串与整型无法比较
# l1 = [11, 22, "aaa", 'bbb'] 
l1 = [11, 22, 1.2, 3.3]
l1.sort()  # 返回值为None
print(l1)
------------------------------------
[1.2, 3.3, 11, 22]

字符串之间比较
l1 = ['aa', '220', 'b', 'nn']
l1.sort()
print(l1)
-------------------------------
['220', 'aa', 'b', 'nn']

4、列表类型总结
1.存多个值
2.有序
3.可变类型

三、元组类型
元组相当于一个不可变的列表,除了不能存,取的操作同列表一样
1、用途: 按照索引存放多个任意类型的值,索引反应的是位置/顺序

2、定义方式:在()内用逗号分隔开多个任意类下的值/元素
强调:当元组内只有一个元素时,必须加逗号

错误方式
t=(10)
print(type(t))
----------------
<class 'int'>

正确方式
t=(10,)
print(type(t))
--------------------------
<class 'tuple'>

3、常用操作+内置的方法
优先掌握的操作:
1、按索引取值(正向取+反向取):只能取

t=(10,1.1,"aaa",[11,22])
print(t[0])
----------------------
10

2、切片(顾头不顾尾,步长)

t=(11,22,33,44,55)
print(t[0:3])  # 取0,1,2三个索引的值
---------------------
11,22,33

3、长度

t=(11,22,33,44,55)
print(len(t))

4、成员运算in和not in

t=(11,22,33,44,55)
print(11 in t)

5、循环

for x in t:
    print(x)

4、元组类型总结:
1.存多个值
2.有序
3.不可变类型
四、字典类型
1、用途:按key:value的形式存放多个任意类型的value,key反映的是value的属性
因为字典的key是不能重复的,所以我们也可以利用这个特点来去重
2、定义方式:在{}内用逗号分隔开多个key:value,其中value可以是任意类型
而key必须是不可变的类型,通常是字符串类型,若key为可变类型,会报错显示unhashable

d={'k1':111,'k1':222,'k1':3333}  # key重复,只保留一个
print(d)
# 生成字典
d=dict(x=1,y=2,z=3)
print(d)

类型转换

l=[("name","egon"),("age",18),["gender","male"]]
res=dict(l)
print(res)
# 空字典
d={}
print(type(d))

快速构造字典,此处可能容易出面试题,尤其注意创建的value是可变类型时候,向value加值会使得所有key对应的value都加上值

dic = {}.fromkeys(['name','age','sex'],None)
print(dic)
dic1 = {}.fromkeys('hello',None)
print(dic1)
-------------------------------------------
{'name': None, 'age': None, 'sex': None}
{'h': None, 'e': None, 'l': None, 'o': None}  # 在此处我们就可以看到,字典的key是不能重复的,hello中有两个l,此处只有一个l的key,所以可以利用字典去重

3、常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
若key存在就取值,如不存在就加值,取值最好用get方法

d={'k1':111}
print(d['k1'])
d['k2']=222
print(d)

2、长度len

d={'k1':111,'k2':222}
print(len(d))

3、成员运算in和not in

d={'k1':111,'k2':222}
print('k1' in d)
print(111 in d)

4、删除
6.1 del:万能删除,没有返回值,代表的是单纯的删除

d={'k1':111,'k2':222}
del d['k1']
print(d)

6.2 popitem:随机删,返回一个元组

d = {'k1':111,'k2':222,'k3':333}
res = d.popitem()
print(d,res)
-----------------------
{'k1': 111, 'k2': 222} ('k3', 333)

6.3 pop:指定key删除,有返回值,代表的是取走操作

d={'k1':111,'k2':222}
res=d.pop('k1')
print(d)
print(res)
-----------------------------
{'k2': 222}
111

5、键keys(),值values(),键值对items() 与for循环

d = {'k1':111,'k2':222,'k3':333}
for key in d.keys():
    print(key,end='  ')
print()
for value in d.values():
    print(value,end='  ')
print()
for k,v in d.items():
    print(k,v)
---------------------------------
k1  k2  k3  
111  222  333  
k1 111
k2 222
k3 333
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容