基本数据类型的内置方法

基本数据类型内置方法

一、进制之间的转换

  • 实例
'''
其他进制转10进制用int,10进制转其他进制三个数bin Oct hex
二进制转10进制
110
人工计算:1*(2**2)+1*(2**1)+0*(2**0)=6
电脑计算:print(int("110", 2))

八进制转10进制
123
人工计算:1*(8**2)+2*(8**1)+3*(8**0)=83
电脑计算:print(int("123", 8))

16进制转10进制
801
人工计算:8*(16**2)+0*(16**1)+1*(16**0)=2049
电脑计算:print(int("801", 16))

10进制转2进制
bin(108)
>>>0b1101100
10进制转8进制
oct(108)
>>>0o154
10进制转16进制
hex(801)
>>>0x321

'''

二、基本数据类型及内置方法

  • 整型int

    用途: 用来记录人的年龄,手机号码等整数相关的状态

    定义方式:age = 18

    常用于数学计算

    小结:整型int无序,不可变,存一个值

  • 浮点型float

    用途: 用来记录人的身高,体重,薪资等小数相关的转态

    定义方式:height = 1.77

    常用于数学计算

    小结: 无序,不可变,一个值

  • 字符串str

    用途: 用来存一些描述性的信息,存个人爱好,个人简介

    定义方式:s1 = 'yafeng666'

    可用单引号或双引号或三引号表示,但不可混用

    小结:有序,不可变,一个值

  • 字符串要优先掌握的内置方法

#1.strip()去除字符串左右两边的空格,但是去除不了中间的间隔
s1 = "***yafeng666***"
s1.strip("*")
print(s1.strip("*"))
>>>yafeng666

#2.split()切分,对字符串进行切分,可以指定切分的分隔符,返回是一个列表
s2 = "yafeng|18|male"
s2.split("|")
print(s2.split("|"))
>>>['yafeng', '18', 'male']

#3.len()获取当前数据中元素的个数,空格也算一个字符
s1 = "***yafeng666***"
print(len(s1))
>>>15

str1 = 'hello python!'
# 4.按索引取值(正向取,反向取):
# 4.1 正向取(从左往右)
>>> str1[6]
p
# 4.2 反向取(负号表示从右往左)
>>> str1[-4]
h
# 4.3 对于str来说,只能按照索引取值,不能改
>>> str1[0]='H' # 报错TypeError

# 5.切片(顾头不顾尾,步长)
# 5.1 顾头不顾尾:取出索引为0到8的所有字符
>>> str1[0:9]  
hello pyt
# 5.2 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符
>>> str1[0:9:2]  
hlopt 
# 5.3 反向切片
>>> str1[::-1]  # -1表示从右往左依次取值
!nohtyp olleh

# 6.成员运算 in 和 not in    
# 6.1 int:判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# 6.2 not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True


# 7.循环
>>> str5 = '今天你好吗?'
>>> for line in str5:  # 依次取出字符串中每一个字符
...     print(line)
...
今
天
你
好
吗
?
  • 字符串需要掌握的方法
1、strip,lstrip,rstrip
str1 = "***yafeng666***"

>>> str1.strip('*')  # 移除左右两边的指定字符
'yafeng666'
>>> str1.lstrip('*')  # 只移除左边的指定字符
yafeng666***
>>> str1.rstrip('*')  # 只移除右边的指定字符
***yafeng666

2、lower(),upper()

>>> str2 = 'My nAme is yafenG!'

>>> str2.lower()  # 将英文字符串全部变小写
my name is yafeng!
>>> str2.upper()  # 将英文字符串全部变大写
MY NAME IS YAFENG!

3、startswith,endswith

>>> str3 = 'yafeng 666'

# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False
>>> str3.startswith('y') 
True
>>> str3.startswith('j')
False
# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False
>>> str3.endswith('666')
True
>>> str3.endswith('sixsixsix')  
False

4、格式化输出之format

# 类似于%s的用法,传入的值会按照位置与{}一一对应
>>> str4 = 'my name is {}, my age is {}!'.format('yafeng', 18)
>>> str4 
my name is yafeng, my age is 18!

# 把format传入的多个值当作一个列表,然后用{索引}取值
>>> str4 = 'my name is {0}, my age is {1}!'.format('yafeng', 18)
>>> str4
my name is yafeng, my age is 18!

>>> str4 = 'my name is {1}, my age is {0}!'.format('yafeng', 18)
>>> str4  
my name is 18, my age is yafeng!

>>> str4 = 'my name is {1}, my age is {1}!'.format('yafeng', 18)
>>> str4  
my name is 18, my age is 18!

# format括号内在传参数时完全可以打乱顺序,但仍然能指名道姓地为指定的参数传值,name=‘yafeng’就是传给{name}
>>> str4 = 'my name is {name}, my age is {age}!'.format(age=18,name='yafeng')
>>> str4  
'my name is yafeng, my age is 18!'

>>> str4 = 'my name is {name}{name}{name}, my age is {name}!'.format(name='yafeng', age=18)
>>> str4  
'my name is yafengyafengyafeng, my age is yafeng!'

5、split,rsplit

# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
>>> str5='yafeng:/6/6/6'
>>> str5.split('/',1)
['yafeng', '6/6/6']  

# rsplit刚好与split相反,从右往左切割,可以指定切割次数
>>> str5='6|6|8'
>>> str5.rsplit('|',1)
['6|6', '8']

6、join

# 从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
>>> '%'.join('hello') # 从字符串'hello'中取出多个字符串,然后按照%作为分隔符号进行拼接
'h%e%l%l%o'
>>> '|'.join(['yafeng','18','read'])  # 从列表中取出多个字符串,然后按照*作为分隔符号进行拼接
'yafeng|18|read'

7、replace

# 用新的字符替换字符串中旧的字符
>>> str7 = 'my name is yafeng, my age is 18!'  # 将yafeng的年龄由18岁改成22岁
>>> str7 = str7.replace('18', '22')  # 语法:replace('旧内容', '新内容')
>>> str7
my name is yafeng, my age is 22!

# 可以指定修改的个数
>>> str7 = 'my name is yafeng, my age is 18!'
>>> str7 = str7.replace('my', 'MY',1) # 只把一个my改为MY
>>> str7
'MY name is yafeng, my age is 18!'

8、isdigit

# 判断字符串是否是纯数字组成,返回结果为True或False
>>> str8 = '1314520'
>>> str8.isdigit()
True

>>> str8 = 'yafeng666'
>>> str8.isdigit()
False
  • 字符串了解即可的知识
# 1.find,rfind,index,rindex,count
# 1.1 find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
>>> msg='yafeng say hello'
>>> msg.find('f',1,3)  # 在索引为1和2(顾头不顾尾)的字符串中查找字符f的索引
1  
# 1.2 index:同find,但在找不到时会报错
>>> msg.index('n',2,4) # 报错ValueError
# 1.3 rfind与rindex:略
# 1.4 count:统计字符串在大字符串中出现的次数
>>> msg = "hello everyone"
>>> msg.count('e')  # 统计字符串e出现的次数
4
>>> msg.count('e',1,6)  # 字符串e在索引1~5范围内出现的次数
1

# 2.center,ljust,rjust,zfill
>>> name='yafeng'
>>> name.center(30,'-')  # 总宽度为30,字符串居中显示,不够用-填充
-------------yafeng-------------
>>> name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充
yafeng**************************
>>> name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充
**************************yafeng
>>> name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充
00000000000000000000000000000000000000000000yafeng

# 3.expandtabs
>>> name = 'yafeng\thello'  # \t表示制表符(tab键)
>>> name
yafeng    hello
>>> name.expandtabs(1)  # 修改\t制表符代表的空格数
yafeng hello

# 4.captalize,swapcase,title
# 4.1 captalize:首字母大写
>>> message = 'hello everyone nice to meet you!'
>>> message.capitalize()
Hello everyone nice to meet you!  
# 4.2 swapcase:大小写翻转
>>> message1 = 'Hi girl, I want make friends with you!'
>>> message1.swapcase()  
hI GIRL, i WANT MAKE FRIENDS WITH YOU!  
#4.3 title:每个单词的首字母大写
>>> msg = 'dear my friend i miss you very much'
>>> msg.title()
Dear My Friend I Miss You Very Much 

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

#isdigt:bytes,unicode
>>> num1.isdigit()
True
>>> num2.isdigit()
True
>>> num3.isdigit()
False
>>> num4.isdigit() 
False

#isdecimal:uncicode(bytes类型无isdecimal方法)
>>> num2.isdecimal() 
True
>>> num3.isdecimal() 
False
>>> num4.isdecimal() 
False

#isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法)
>>> num2.isnumeric() 
True
>>> num3.isnumeric() 
True
>>> num4.isnumeric() 
True

# 三者不能判断浮点数
>>> num5 = '4.3'
>>> num5.isdigit()
False
>>> num5.isdecimal()
False
>>> num5.isnumeric()
False

'''
总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric。
'''

# 6.is其他
>>> name = 'yafeng123'
>>> name.isalnum() #字符串中既可以包含数字也可以包含字母
True
>>> name.isalpha() #字符串中只包含字母
False
>>> name.isidentifier()  #方法用于判断字符串是否是有效的Python标识符,可用来判断变量名是否合法。
True
>>> name.islower()  # 字符串是否是纯小写
True
>>> name.isupper()  # 字符串是否是纯大写
False
>>> name.isspace()  # 字符串是否全是空格
False
>>> name.istitle()  # 字符串中的单词首字母是否都是大写
False
  • 列表

    定义:在[]内,用逗号分隔开多个任意数据类型的值

    l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])

  • 列表优先掌握的知识

# 1.按索引存取值(正向存取+反向存取):即可存也可以取  
# 1.1 正向取(从左往右)
>>> my_friends=['yafeng','jason','tom',4,5]
>>> my_friends[0]  
yafeng
# 1.2 反向取(负号表示从右往左)
>>> my_friends[-1]  
5
# 1.3 对于list来说,既可以按照索引取值,又可以按照索引修改指定位置的值,但如果索引不存在则报错
>>> my_friends = ['yafeng','jack','jason',4,5]
>>> my_friends[1] = 'martthow'
>>> my_friends
['yafeng', 'martthow', 'jason', 4, 5]


# 2.切片(顾头不顾尾,步长)
# 2.1 顾头不顾尾:取出索引为0到3的元素
>>> my_friends[0:4] 
['yafeng', 'jason', 'tom', 4]
# 2.2 步长:0:4:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2的元素
>>> my_friends[0:4:2]  
['yafeng', 'tom']

# 3.长度
>>> len(my_friends)
5

# 4.成员运算in和not in
>>> 'yafeng' in my_friends
True
>>> 'xxx' not in my_friends
True

# 5.添加
# 5.1 append()列表尾部追加元素
>>> l1 = ['a','b','c']
>>> l1.append('d')
>>> l1
['a', 'b', 'c', 'd']

# 5.2 extend()一次性在列表尾部添加多个元素
>>> l1.extend(['a','b','c'])
>>> l1
['a', 'b', 'c', 'd', 'a', 'b', 'c']

# 5.3 insert()在指定位置插入元素
>>> l1.insert(0,"first")  # 0表示按索引位置插值
>>> l1
['first', 'a', 'b', 'c', 'alisa', 'a', 'b', 'c']

# 6.删除
# 6.1 del
>>> l = [11,22,33,44]
>>> del l[2]  # 删除索引为2的元素
>>> l
[11,22,44]

# 6.2 pop()默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素
>>> l = [11,22,33,22,44]
>>> res=l.pop()
>>> res
44
>>> res=l.pop(1)
>>> res
22

# 6.3 remove()括号内指名道姓表示要删除哪个元素,没有返回值
>>> l = [11,22,33,22,44]
>>> res=l.remove(22) # 从左往右查找第一个括号内需要删除的元素
>>> print(res)
None


posted @ 2019-11-05 16:58  alen_zhan  阅读(307)  评论(0编辑  收藏  举报
返回顶部