7.3数据类型及内置方法(一)

整型

  1.用途:QQ号,手机号,身份证号(不带X的)...

  2.定义方式:内部原理就相当于age = 18  # age = int(18)

  int只能转换纯数字的字符串,带其他任何字符串都不行,包括小数点

进制转换

  1.二进制转十进制:10

  1*(2**1) + 0*(2**0)

  print(int('10',2)) 

  2.八进制转十进制:110

  1*(8**2) + 1*(8**1) + 0*(8**0)

  print(int('10',2)) 

  3.十六进制转十进制:110

  1*(16**2) + 1*(16**1) + 0*(16**0)

  print(int('110',16))10进制转其他进制

十进制转换其他进制

十进制转换二进制

  print(bin(12))  # 0b1100  0b表示后面的数字是二进制数

  十进制转换八进制

  print(oct(12))  # 0o14  0o表示后面的数字是八进制数

  十进制转换十六进制

  print(hex(12))  # 0xc  0x表示后面的数字是十六进制数

  可变与不可变类型

可变类型:数据值改变的情况下,id不变

不可变类型:数据值改变的情况下,id也变了

  所以整型是不可变类型

有序和无序的概念

  能用索引取值的数据都是有序的,否则无序。

  所以整型是无序的

浮点型

  1.作用:薪资,身高,体重

  2.定义:内部原理就是 salary = 1.1  # salar = float(1.1)

字符串类型

  1.作用:描述性的数据

  2.定义:内部原理就是s = 'hello baby'  # s = str('hello baby')

1.按索引取值(只能取值)

正向取

s = 'hello world'
print(s[0])

反向取

s = 'hello world'
print(s[-1])

2.切片

顾头不顾尾,步长,从一个大的字符串中截取一段新的小字符串,左边的固定就是头,右边固定就是尾

s = 'hello big baby~'
print(s[0:5])  # hello
print(s[0:10:1])  # hello big   步长不写默认是1
print(s[0:10:2])  # hlobg 步长表示隔几个取一个

负数取值

s = 'hello big baby~'
print(s[-1])  
print(s[5:0:-1])  
print(s[-1:-10:-2])  

3.长度

len():统计的是字符串中字符的个数(比较特殊)

s = 'abcde'
print(len(s))

4.成员运算

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

print('egon' in 'egon is dsb and egon is sb')
print('g' in 'egon is dsb and egon is sb')
print('jason' not in 'egon is dsb and egon is sb')
View Code

5.删除字符串左右两边的字符

strip():默认删除左右两边的空格,括号中加字符,删除对应字符

name = '  francis  '
print(name.strip())
name1 = '1francis'
print(name1.strip('1'))

lstrip():只删除字符左边的

name = '  francis  '
print(name.lstrip())

rstrip():只删除字符右边的

name = '  francis  '
print(name.rstrip())

6.切分

split():针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值

data = 'jaso n|123| handsome'
print(data.split('|'))

rsplit():从右向左分割

data = 'jaso n|123| handsome'
print(data.rsplit('|',1))  # 1代表最大分割的数量

附加:join():将容器类型的数据中的多个元素通过指定字符拼接成一个字符串

data = ['1','2','3','a','b']
data1 = '|'.join(data)
print(data1)

7.循环

data = 'jaso n|123| handsome'
for i in data:
    print(i)

8.upper和lower

字符全大写

name = 'FranCis'
print(name.upper())

字符全小写

name = 'FranCis'
print(name.lower())

9.判断字符什么以开头和结尾

name = 'Francis'
print(name.startswith('F'))  # 判断字符串是否以什么什么开头
print(name.endswith('s'))  # 判断字符串是否以什么什么结尾

10.format的三种用法

1.第一种(按位置占位,跟%s原理一致)

str1 = 'my name is {} my age is {}'.format('francis',23)
str2 = 'my name is {} my age is {}'.format(23,'francis',)
print(str1)
print(str2)

2.第二种(按索引占位)

str1 = 'my name is {0} my age is {1},{1},{0}'.format('francis',23)
print(str1)

3.第三种(指名道姓占位,类似于用字典的key占位)

str1 = 'my name is {name} my age is {age},{age},{name}'.format(name='francis',age=23)
print(str1)

11.replace

替换字符串中的某个值

str = 'francis age is 23,francis has a car '
res = str.replace('francis','XXX')
res1 = str.replace('francis','XXX',1)  # 1表示替换几次,默认全替换
print(str)
print(res)
print(res1)

12.isdigit

判断字符串中包含的是否全部是数字

age = '18'
age1 = 'aaa'
print(age.isdigit())
print(age1.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,4))  # 还可以通过索引来限制查找范围
print(s.index('o'))  # 返回所传字符所在的索引值
print(s.index('i',0,3))  # 返回所传字符所在的索引值,找不到会报错
print(s.count('n'))  # 统计字符出现的次数
View Code

14.center,ljust,rjust,zfill

s = 'francis'
print(s.center(13,'*'))  # 类似于居中对齐
print(s.ljust(40,' '))  # 类似于左对齐
print(s.rjust(40,' '))  # 类似于右对齐
print(s.zfill(40))

15.expandtabs

扩展的制表符

s10 = 'a\tbc'
print(s10.expandtabs(100))
View Code

16.captalize,swapcase,title

s12 = 'hElLo WoRLD sH 20'
print(s12.capitalize())  # Hello world 首字母大写,不影响数字
print(s12.swapcase())  # 大小写互换
print(s12.title())  # 每个单词的首字母大写

17.is数字系列

num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='' #中文数字
num4='' #罗马数字
# ''.isnumeric(): unicode,中文数字,罗马数字    只要是表示数字都识别
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())

# ''.isdecimal(): unicode   只识别普通的阿拉伯数字
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())

# ''.isdigit() :bytes,unicode    通常情况下使用isdigit就已经满足需求了
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
View Code

由以上可知字符串是有序的(但凡有索引的数据都是有序的),而且是不可变类型。

列表类型

作用:多个数据,多个账号,多个手机号,多个姓名

定义:[]内可以有多个任意类型的值,逗号分隔,内部原理就是 l =[1,3,5,7]  # l = list([1,3,5,7])

1.按索引取值(可存可取),切片

  正向取值

l = [1,2,3,4]
print(l[0:4:1])  # 0:4代表范围  1代表步长
print(l[0::])

  反向取值

l = [1,2,3,4]
print(l[5::-1])

  存值

l = [1,2,3,4]
l[0] = 69
print(l)

2.append,insert,extend

在列表中添加数据

l = [11,22,33,44,55]
l1 = [99,88,77,66]
# 1.尾部添加一个66
l.append(66)  # 注意append值能将被添加的数据当作列表的一个元素
print(l)
# 2.任意位置添加元素
l.insert(2,96)  # 通过索引在任意位置添加元素
print(l)  # 注意insert值能将被添加的数据当作列表的一个元素
# 3.添加容器类型数据
l.extend(l1)  # 内部原理for循环l1一个个追加到列表的尾部
print(l)
View Code

3.len

列表长度,数据个数。

4.in和not in

判断数据是否属于列表

5.删除

del

l = [11,22,33,44,55]
print(l)
del l[2]  # del适用于所有的删除操作,用索引删除
print(l)

remove

l = [11,22,33,44,55]
print(l)
l.remove(33)  # 指定要删除的元素的值
print(l)

6.数据弹出

  尾部弹出

l = [11,22,33,44,55]
res1 = l.pop()  # 尾部弹出
res2 = l.pop()
res3 = l.pop()
print(res1,res2,res3)

  指定位置的数据弹出

l = [11,22,33,44,55]
res1 = l.pop(1)  # 可以指定索引 按照索引弹出元素
print(res1)

7.循环

l = [11,22,33,44,55]
for i in l:
    print(i)

 

posted @ 2019-07-03 23:02  Francis`  阅读(175)  评论(0编辑  收藏  举报