数据类型及内置方法

Int

特点: 存一个值,无序,不可变

定义方式:

age = 20  # age = int(20)

注意:

int('asd')  # 报错 

int(11.1)  #报错,int只能将字符串是数字类型转为整型,小数点都不行

进制转换

  • 其他进制转十进制

二进制转十进制 0 1

10  # 0*(2**0)+1*(2**1)=  2

print(int('10',2))

八进制转十进制 1 - 7

256  # 6*(8**0)+5*(8**1)+2*(8**2)= 174

print(int('256',8))

十六进制转十进制 1-9 A-F

215  # 5*(16**0)+1*(16**1)+2*(16**2) = 533

print(int('215',16))

 

  • 十进制转其他进制

十进制转二进制

print(bin(2))  # 0b10

十进制转八进制

print(oct(174))  # 0o256

十进制转十六进制

print(hex(533))  # 0x215

Str

特点: 存多个值,有序,不可变

定义方式 :用单引号或多因号括起来' ', '' '', ''' '''

s = 'hello word'  # s = str(hello word)

常用操作和内置的方法 

所有的方法均不改变字符串原值

  • 按索引取值(正向,反向)

只能取不能改

print(s[0]) # >>> h
print(s[-1])  # >>> d
  • 切片

可以正切,反切,指定步长

print(s[0:5]) # >>> hello
print(s[0:8])   # 默认步长为1 >>> hello wo
print(s[0:8:2])  # hlow
print(s[1:5:-2])  # 步长为负数,取不出
print(s[-1:-5])  # 步长为正数,取不出
print(s[-1:-5:-2])  # 反向切片 >>> do
  • len()

用  len() 统计字符串长度(字符个数)

s = ' '
print(len(s))  # >>> 1
  • 成员运算 

in和not in 判断数据是否其中

s = 'hello word'
print('he'in s)  # True
print(' 'in s)  # True
print('w'in s)  # True
print('H'in s)  # False
print('H'not in s)  # True
  • .strip() / .lstrip() / .rstrip()

默认去掉字符串两边的空格,不去中间的空格

s = 'hello word'
inp_s = input('your input>>>:').strip()
if s == inp_s:
    print('good')
# ps : 内置方法统一采用句点符‘.’号
s = 'hello word'
s1 = '   hello word   '.strip()
print(s == s1)  # True

若要去掉其他符号,在.strip()的括号内加入你想去掉的符号,用引号引起来

s = 'hello word'
s1 = '#%^hello word#%  ^&'.strip('#$%^  &')
print(s == s1)  # True

 

 lstrip()去点字符串左边的符号 rstrip()去掉字符串右边的符号 l=left r=right

s = '&&&hello word####'
print(s.lstrip('&'))  #去掉左边 >>> hello word####
print(s.rstrip('#'))  #去掉右边 >>> &&&hello word
  •  .split()

字符串按某种分隔符(也可以是字符)切分成列表,进行进一步的操作

s = 'waller:123:a'
print(s.split(':'))  # >>> ['waller', '123', 'a']
name,psw,info = s.split(':')  # 把切分出来的列的值,解压赋值给name,psw,info
print(name,psw,info)  # >>> waller 123 a

#split 默认由左向右切分,rsplit由右向左切分,可以设定却分的次数
s = 'waller:name:age:20'
print(s.split(':'))  # 默认从左向右依次切分 >>> ['waller', 'name', 'age', '20']
print(s.split('e',1))  # 只切分一次 >>> ['wall', 'r:name:age:20']
print(s.rsplit('e',1))  # 从右向左切分一次 >>> ['waller:name:ag', ':20']
  •  .join() 

把容器类型里的数据按某种符号或字符结合成一整个字符串 注意:容器里的数据类型必须是str类型

l = ['waller','123','a']
s = '|'.join(l)
print(s)  # >>> waller|123|a
  • 循环 

字符串类似容器类型数据,可以用for循环取除字符

s = 'ab cd'
for item in s:
    print(item,end='') # >>> ab cd
  • .lower() / .upper() / .captalize() / .swapcase() / .title()

s = 'Hello WoRD'
# lower 全大写
print(s.lower())  # >>> hello word
# upper 全小写
print(s.upper())  # >>> HELLO WORD
s = 'hElLo WorD'
# captalize 首字母大写
print(s.capitalize())  # >>> Hello word
# swapcase 大小写互换
print(s.swapcase())  # >>> HeLlO wORd
# title 每个单词首字母大写
print(s.title())  # >>> Hello Word
  • .starswith / .endswith

s = 'hello word'
print(s.startswith('h')) # True 判断字符串是以什么为开头的
print(s.startswith('he'))  # True
print(s.endswith('d'))  # True 判断字符串是以什么为结尾的
  • .format() 格式化输出

# 按位置占位,谁先来谁先进
print('my name is {},my age is {}'.format('waller',20))  
# >>> my name is waller,my age is 20
print('my name is {},my age is {}'.format(20,'waller')) 
# >>> my name is 20,my age is waller

# 按索引占位
print('my name is {0},my age is {1}'.format('waller',20))  
# >>> my name is waller,my age is 20
print('my name is {1},my age is {0}'.format('waller',20))  
# >>> my name is 20,my age is waller
print('my name is {0},my age is {0}'.format('waller',20))  
# >>> my name is waller,my age is waller

# 按指定位置占位
print('my name is {name},my age is {age}'.format(name = 'waller',age = 20))
# >>> my name is waller,my age is 20
print('my name is {age},my age is {name}'.format(name = 'waller',age = 20))
# >>> my name is 20,my age is waller
  • .replace 字符替换

s = 'waller is stutend for oldboy , waller in python10 class '
print(s.replace('waller','wong',1))  # .replace('被替换的字符','替换字符',替换次数) 默认全部替换
# >>> wong is stutend for oldboy , waller in python10 class
  • .isdigit

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

age = 25
num = 0
while True:
    if num == 3:
        an = input('是否继续 y/n>>>:').lower().strip()
        if an == 'y':
            num = 1
            continue
        else:
            break
    guess_age = input('>>>:').strip()
    if guess_age.isdigit:  # isdigit有布尔值属性
        guess_age = int(guess_age)
        if guess_age == age:
            print('猜对了')
            break
        else:
            print('猜错')
            num += 1
    else:
        print('请输入数字')
  • .find() / .rfind() / .index() / .rindex() / .count() 

s = 'hello word'
# find 查找字符的索引值,找不到不报错,返回-1.
print(s.find('w'))  # >>> 6
print(s.find('w',0,3))  # >>> -1 按索引范围查找
# index 查找字符的索引值,找不到则报错。
print(s.index('w'))  # >>> 6
print(s.index('w',0,3))  # >>> 报错
# count 统计字符串出现的次数
print(s.count('o'))  # >>> 2
  •  .center() / .ljust() / .rjust() / .zfill()

s = 'hello word'
print(s.center(30,'*') )  # 居中 字符串加* 共30个字符,字符串居中显示
# >>> **********hello word**********
print(s.ljust(30,'%'))  # 居左
# >>> hello word%%%%%%%%%%%%%%%%%%%%
print(s.rjust(30,'$'))  # 居右
# >>> $$$$$$$$$$$$$$$$$$$$hello word
print(s.zfill(30))  # 居右 用 0 补位
# >>> 00000000000000000000hello word
 
  • .expandtabs()

s = 'w\tps'
print(s.expandtabs(10)) # 在字符串\t处插入空格
# >>> w         ps
  • .is系列

s1 = b'2'  # bytes 二进制
s2 = u'2'  # unicode,python3中无需加u就是unicode
s3 = '壹'  # 中文大写数字
s4 = 'Ⅳ'  # 罗马数字
#isnumeric(): unicode,中文数字,罗马数字    只要是表示数字都识别
print(s2.isnumeric())  # True
print(s3.isnumeric())  # True
print(s4.isnumeric())  # True

#isdecimal(): unicode   只识别普通的阿拉伯数字
print(s2.isdecimal())  # True
print(s3.isdecimal())  # False
print(s4.isdecimal())  # False

# isdigit() :bytes,unicode    通常情况下使用isdigit就已经满足需求了
print(s1.isdigit())  # True
print(s2.isdigit())  # True
print(s3.isdigit())  # False

List

特点: 存多个值, 有序, 可变

义方式 :[ ] 内用逗号分隔开

l_list = ['waller',123,'age',20,'info','wong']
l = list({'name':'waller','age':20,'info':'wong'})
# 列表内部就是for循环取值,然后一个个塞进列表
print(l)  # >>> ['name', 'age', 'info']

常用操作

  • 索引取值

l_list = ['waller',123,'age',20,'info','战神','德德','晓峰','宝贝']
print(l_list[0])  # 'waller' 按索引正向取
print(l_list[-1])   # '宝贝' 按索引反向取
  • 切片

print(l_list[0:3])  # ['waller', 123, 'age']
print(l_list[0:3:2])  # ['waller', 'age']
print(l_list[0:3:-1]) # []
print(l_list[-1:-3:-1])  # ['wong', 'info']
  • 添加元素

.append() 在列表内直接添加元素(追加)

l_list = ['waller',123,'age',20,'info','wong']
l_list.append('hoddy')
print(l_list)
# >>> ['waller', 123, 'age', 20, 'info', 'wong', 'hoddy']
.insert() 通过索引位置添加元素
l_list = ['waller',123,'age',20,'info','wong']
l_list.insert(1,'hobby')  # .insert(索引,添加的元素)
print(l_list)
# >>> ['waller', 'hobby', 123, 'age', 20, 'info', 'wong']
.extend() 添加容器类型数据 内部原理是for循环取值容器内的元素添加到另一个列表
l_list = ['waller',123,'age',20,'info','wong']
l = [1,2,'a']
l_list.extend(l)  # 把 l 添加到l_list
print(l_list)
# >>> ['waller', 123, 'age', 20, 'info', 'wong', 1, 2, 'a']
  • 删除元素

del 按索引暴力删除元素,没有返回值 (可以删除任意类型数据的值)

l_list = ['waller',123,'age',20,'info','wong']
del l_list[0]
print(l_list)
# [123, 'age', 20, 'info', 'wong']

pop 按索引删除元素,有返回值

l_list = ['waller',123,'age',20,'info','wong']
l_list.pop(-1)  # 若取不存在的索引则报错
print(l_list)  # ['waller', 123, 'age', 20, 'info']

remove 指定要删除的元素

l_list = ['waller',123,'age',20,'info','wong']
l_list.remove('wong')
print(l_list)  # >>> ['waller', 123, 'age', 20, 'info']
  • 循环取值 for

l_list = ['waller',123,'age',20,'info','wong']
for i in l_list:
    print(i,end='/')  # >>> waller/123/age/20/info/wong/
  • 统计长度 len()

l_list = ['waller',123,'age',20,'info','wong']
print(len(l_list))  # >>> 6
  • 成员运算 in / not in

l_list = ['waller',123,'age',20,'info','wong']
print('age'in l_list)  # True
  • 统计次数 .count()

l_list = ['waller',123,'age',20,'info','wong',20]
print(l_list.count(20))  # >>> 2
  • 清空列表 .clear()

l_list = ['waller', 123, 'age', 20, 'info', 'wong', 20]
mgs = l_list.clear()
print(l_list)  # >>> []
print(mgs)  # >>> None
  • 反转列表 .reverse()

l_int = [1,2,3,4,5]
l_int.reverse()
print(l_int) # >>> [5, 4, 3, 2, 1]
  • 排序列表 .sort()

l_int = [1,10,3,12,5,4.1,]
l_int.sort()
print(l_int)  # >>> [1, 3, 4.1, 5, 10, 12]

l_int.sort(reverse = True)  # 可以通过操作sort里的reverse参数使列表降序
print(l_int)  # >>> [12, 10, 5, 4.1, 3, 1]
  • 去重

1、set()方法

numbers = [1,7,3,2,5,6,2,3,4,1,5]
new_numbers = list(set(numbers))
print new_numbers
输出

[1, 2, 3, 4, 5, 6, 7]

特点:不保证原有顺序

2、原始方法

numbers = [1,7,3,2,5,6,2,3,4,1,5]
new_numbers = []
for x in numbers:
    if x not in new_numbers:
       new_numbers.append(x)
print(new_numbers)

特点:直观,原有顺序不变

3、set()方法,保持原有顺序

numbers = [1,7,3,2,5,6,2,3,4,1,5]
new_numbers = list(set(numbers))
new_numbers.sort(key=numbers.index)
print(new_numbers)

特点:将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。
但是,可以通过列表中索引(index)的方法保证去重后的顺序不变。

4. {}.fromkeys() 去重保持顺序不变

num = [1,2,2,3,5,8,8,7]
num = list({}.fromkeys(recommend_keyword).keys())
print(num)
# [1,2,3,5,8,7]

Tuple

特点: 存多个值, 有序, 不可变

定义:()内,逗号分隔开

t_tuple = ('waller',123,'age',20,['read','study'])
t_tuple = tuple(('waller',123,'age',20,['read','study']))  # for循环取值存到元组t_tuple中
tuple()  # 括号内只能放容器类型的数据,如放单个数字类型数据,需要加个逗号 tuple((1,))

常用操作

  • 索引取值

t_tuple = ('waller',123,'age',20,['read','study'])
print(t_tuple[0])  # >>> waller
print(t_tuple[-1])  # >>> ['read', 'study']
  • 切片

t_tuple = ('waller',123,'age',20,['read','study'])
print(t_tuple[0:3:2])  # >>> ('waller', 'age')
print(t_tuple[0:-1])  # >>> ('waller', 123, 'age', 20)
  • 统计长度 len()

t_tuple = ('waller',123,'age',20,['read','study'])
print(len(t_tuple))  # >>> 5  统计的是元组内元素的个数
  • 成员运算 in / not in

t_tuple = ('waller',123,'age',20,['read','study'])
print('waller'in t_tuple)  # True
  • 循环取值 for

t_tuple = ('waller',123,'age',20,['read','study'])
for i in t_tuple:
    if i == 123:
        continue
    print(i,end=' ')  # >>> waller age 20 ['read', 'study']

Dict

特点: 存多个值, 无序, 可变

key:value 键值对的形式,key只能是不可变类型,通常是字符串类型

定义:{}内用逗号分隔开的key:value键值对

# 三种定义方法
d1 = {'name':'waller','age':20,'hobby':['read','studt',123]}

d2 = dict(name = 'waller',age = 20,hobby = ['read','study',123])

l = [
    ['name','waller'],
    ['age',20],
    ['hobby',['read','study',123]]
]
d3 = {}
for i in l:  # 循环取出列表的值。
    k,v = i  # 把循环出来的列表解压赋值给k和v
    d3[k] = v  # 通过字典用key增加元素的方法
    print(d3)
# {'name': 'waller', 'age': 20, 'hobby': ['read', 'study', 123]}

常用操作

  • key存取值

#存值:当key不存在时,添加key:value,若key存在,则key的新value代替原value
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
d['name'] = 'wong'
print(d)
# {'name': 'wong', 'age': 20, 'hobby': ['read', 'studt', 123]}
d['school'] = 'oldboy'
print(d)
# {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123], 'school': 'oldboy'}

 

#取值:当key存在,返回value,若key不存在则报错
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print(d['name'])  # >>> waller
print(d['school'])  # 报错

 

get() 方式取值
当key存在,则返回value,当key不存在时,不报错,返回None
get的第二个参数,当key存在时,第二个蚕食不打印,返回value,当key不存在时,打印第二个参

 

d = {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123]}
print(d.get('name'))  # >>> waller
print(d.get('school'))  # >>> None

print(d.get('name','我是返回的值'))  # >>> waller
print(d.get('school','我是返回的值'))  # >>> 我是返回的值
  • 统计长度 len()

d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print(len(d))  # >>> 3  键值对个数
  • 成员运算 in / not in

只能判断key是否在字典中
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print('age'in d)  # True
  • 删除键值对 del / pop

#del 通过key删除,没有返回值
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
del d['name']
print(d)
# {'age': 20, 'hobby': ['read', 'studt', 123]}

#pop 通过key删除,返回值是 value
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
res = d.pop('name')
print(d)
# {'age': 20, 'hobby': ['read', 'studt', 123]}
  • 查询

所有键keys(),所有值values(),所有键值对items()
ps: python2和python3有区别,py2中打印的是列表,占内存空间,py3返回的不占内存空间
d = {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123]}
print(d.keys())  # >>> dict_keys(['name', 'age', 'hobby'])
print(d.values())  # >>> dict_values(['waller', 20, ['read', 'studt', 123]])
print(d.items())  # 把它看作是元组,第一个值是key,第二个值是value
# >>> dict_items([('name', 'waller'), ('age', 20), ('hobby', ['read', 'studt', 123])])
  • fromkeys

快速创建字典
d = {'name':'waller','psw':123}
print(dict.fromkeys(d,11)) 
# >>> {'name': 11, 'psw': 11}
  • popitem

弹出键值对 从字典后面以元组的形式弹出键值对
d = {'name':'waller','psw':123}
print(d.popitem())  # >>> ('psw', 123)
  • setdefault() / .update()

新增键值对
dict.setdefault() 
d = {'name':'waller','psw':123}
print(d.setdefault('name','wong'))  # 当key存在时,不修改原值,返回原value
# >>> waller
print(d)  # >>> {'name': 'waller', 'psw': 123}
print(d.setdefault('sge',20))  # 当key不存在时,添加键值对,返回的时添加的value
# >>> 20
print(d)  # {'name': 'waller', 'psw': 123, 'sge': 20}

 

dict.update()
d1 = {'name':'waller','psw':123}
d2 = {'age':20}
d1.update(d2)
print(d1)  # {'name': 'waller', 'psw': 123, 'age': 20}
d3 = {'name':'wong'}  # 若键值对奴存在,则添加;若键值对存在,则顶替
d1.update(d3)
print(d1)  # {'name': 'wong', 'psw': 123, 'age': 20}
d1.update(age = 20)  # {'name': 'wong', 'psw': 123, 'age': 20}
  • 循环 for

取出的是key

d1 = {'name':'waller','psw':123}
for i in d1:
    print(i, end='/')  # name/psw/

Set

特点: 存多个值, 无序, 不可变, 自动去重

定义:{}内用逗号隔开多个元素,元素必须是不可变类型

s = {1,'1','a','b','c',2,2,2,2,2,}
print(s)  # >>> {1, 2, 'b', 'a', 'c', '1'}

常用操作

  • | 集合

# s1与s2中的所有的元素
s1 = {'a','b',1,5,'d','w'}
s2 = {1,2,5,'a','c','e','w'}
print(s1 | s2)  # {1, 2, 5, 'w', 'c', 'd', 'b', 'e', 'a'}
  • - 差集

# s1 中有s2中没有的元素
print(s1 - s2)  # {'d', 'b'}
# s2 中有s1中没有的元素
print(s2 - s1)  # {2, 'e', 'c'}
  • ^ 对称差集

 # s1和s2 不同元素的集合
print(s1 ^ s2)  # {2, 'e', 'b', 'c', 'd'}
  • 父级,子集

s1 = {1,2,3,4,5}
s2 = {1,2,3}
# >= 父级:
print(s1 >= s2)  # True

# <= 子集
print(s2 <= s1)  #True
  • 统计长度 len()

s1 = {'a','b',1,5,'d','w'}
print(len(s1))  # >>> 6
  • 成员运算 in / not in

s1 = {'a','b',1,5,'d','w'}
print('a' in s1)  # True

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值