8.2 day7
数字类型内置方法
为什么要有数据类型?
因为我们对于不同类型的变量需要用不同的数据类型去定义
整型
1.作用:
身高,体重,年龄,ID号
2.定义方式
y = 10
id_num = 1231321
z = int(10)
x = int('10')
3.方法
'+', '-', '*', '/', '%', '//', '**'
pow 开根号
开x的r次方:pow(x, 1.0/r)
返回的是一个浮点值
x = 8
print(pow(x,0.5))
print(int(pow(x,0.5)))
2.8284271247461903
2
4.储存一个值or多个值?
一个值
5.有序or无序?(有序:有索引, 无序:无索引)
没有有序无序这一说
6.可变or不可变(可变:值变id不变,不可变:值变id也变)
不可变
x = 10
print(id(x))
x += 1
print(id(x))
1792634208
1792634240
字符串类型的内置方法(重要且多)
1.作用
女朋友名字, 猪, 性别
2.定义方式
name1 = 'xiaopangi'
name2 = 'lingling'
name3 = '''
xiaopangzi
lingling
'''
number = str(10)
3.方法
优先掌握 (一天学会)
name = ' xiaopangzi 999 lingling love '
1.按索引取值,只能取,不能改
print(name[6])
print(name[-5])
p
l
2.切片:步长为正数,从左到右切片;如果步长为负数,则从右到左切片,默认为[0👎1]
取左不取右
print(name[2:13])
print(name[1:-3:2])
print(name[-1:-6:-1])
xiaopangzi
ioagi 99 lnln o
evol
3.长度 len:
print(len(name))
35
4.成员运算 in / not in
print('pangzi' in name)
print('shabi' not in name)
True
True
5.移除空白 strip
移除两端的空格,从两端往中间
只要是strip()里面的字符,两端遇到就全部移除,无视strip里填写的顺序,默认空格
print(name)
print(name.strip())
print(name.strip(' xeiv'))
xiaopangzi 999 lingling love
xiaopangzi 999 lingling love
aopangzi 999 lingling lo
6.切分/割 split
split()里填写的参数有顺序,遇到就进行切割
从左往右切,可以设置切割次数,返回一个list
未找到则不切割只返回一个含有原字符串的list
未填写参数是默认切割None(移除掉空格,再把空格两端的字符切割)
print(name.split('p'))
print(name.split('ads'))
print(name.split())
print(name.split('l'))
print(name.split('l', 1))
[' xiao', 'angzi 999 lingling love ']
[' xiaopangzi 999 lingling love ']
['xiaopangzi', '999', 'lingling', 'love']
[' xiaopangzi 999 ', 'ing', 'ing ', 'ove ']
[' xiaopangzi 999 ', 'ingling love ']
7.循环
for i in name:
print(i, end='')
xiaopangzi 999 lingling love
需要掌握(三天内学会)
s = 'abcdE54321'
1.lstrip & rstrip
和strip类似
默认都是切空格,只是左右的问题
print(s.lstrip('ac'))
print(s.rstrip('21'))
bcdE54321
abcdE543
2.title & lower & upper
title每个单词的首字母大写,其余小写
lower & upper 全部大写or小写
print(s.title())
print(s.lower())
print(s.upper())
3.startswith & endswith
print(s.startswith('1'))
print(s.startswith('c', 2, 5))
print(s.endswith('2'))
print(s.endswith('3', -5, -2))
False
True
False
True
4.rsplit
和split类似,从右往左切
print(s.rsplit('3'))
['abcdE54', '21']
5.join
最后返回的一定是一个字符串
print('.'.join(s)) # 将'.'插入到s的每一个元素中
a.b.c.d.E.5.4.3.2.1
也可以把字符串插入到列表的每一个元素中(很重要)
s = "Let's take LeetCode contest"
res = ''
s_list = s.split()
for i in range(len(s_list)):
s_list[i] = s_list[i][::-1]
print(''.join(s_list))
print(s_list)
s'teL ekat edoCteeL tsetnoc
["s'teL", 'ekat', 'edoCteeL', 'tsetnoc']
6.replace
默认值是全部替换
print(s.replace('3', '2'))
a.b.c.d.E.5.4.3.2.1
7.isdigit
print(s.isdigit()) # 判断字符串是否由数字组成
False
了解(心中有数)
ss = 'zhi Hu zhen bang'
1.find & rfind & index & rindex & count
find:从左往右,找到就停下
rfind:从右往左,找到就停下,但是查找的元素和索引都是从左往右的
print(ss.find('zh'))
print(ss.rfind('ba')) # 如果输ab就找不到,并且返回的下标也是b的
0
12
index & rindex 用法和find & rfind基本一样,区别如下
find没找到,默认返回'-1', 可以修改返回值
index没找到,报错
推荐用find
print(ss.find('aa'))
print(ss.index('aa'))
-1
ValueError Traceback (most recent call last)
in ()
1 print(ss.find('aa'))
----> 2 print(ss.index('aa'))
ValueError: substring not found
count
print(ss.count('n'))
2
2.center & ljust & rjust & zfill
50中包括the
默认填充的是空格,zfill是填充0
print('the'.center(50))
print('the'.center(50, '-'))
print('the'.ljust(50, '-'))
print('the'.rjust(50, '-'))
print('the'.zfill(50))
the
-----------------------the------------------------
the-----------------------------------------------
-----------------------------------------------the
00000000000000000000000000000000000000000000000the
3.expandtabs
制表符默认是4个空格
expandtabs默认是8个空格
print('a\tb')
print('a\tb'.expandtabs())
a b
a b
4.capitalize & swapcase
print(ss.capitalize()) # 第一个单词首字母大写,其余字母全部小写
print(ss.swapcase()) # 大小写翻转
print(ss)
Zhi hu zhen bang
ZHI hU ZHEN BANG
zhi Hu zhen bang
5.is 系列
太多了,自己百度吧
储存一个值or多个值?
1个值
有序or无序?(有序:有索引, 无序:无索引)
有序
可变or不可变(可变:值变id不变,不可变:值变id也变)
不可变
s = 'abc'
print(id(s))
s += 'de'
print(id(s))
2400066682192
2400136479384
ps:以上的方法都没有改变变量本身,得到的作用只是一个返回值,使用的话需要用变量去接收