6、基本数据类型的内置方法

字符串相关

  str()函数会把内容转换成字符串

l1 = [1, 2, 3]
print(str(l1), type(str(l1)))  # [1, 2, 3] <class 'str'>

print(str({"name": "jason", "age": 18}),
      type(str({"name": "jason", "age": 18})))  # {'name': 'jason', 'age': 18} <class 'str'>

print(str((1, 2, 3)), type(str((1, 2, 3))))  # (1, 2, 3) <class 'str'>

print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))  # {1, 2, 3, 4} <class 'str'>

 

  字符串切片操作

str1 = "hello world"
print(str1[0:9])  # hello wor 索引从0到8 相当于[0, 8)
print(str1[0:9:2])  # hlowr 步长 = 2
print(str1[::-1])  # dlrow olleh 反向切片,-1表示从右向左取值

 

  获取字符串长度

str1 = "hello world"
print(len(str1))  # 11

 

  成员运算

str1 = "hello world"
print("hello" in str1)  # True

 

  去除首尾空格和换行

str1 = "       life is short        "
print(str1.strip())  # life is short

 

  去除首尾指定字符

str2 = "********life is short*********"
print(str2.strip("*"))  # life is short

 

  拆分字符串

str1 = 'hello world'
print(str1.split())  # ['hello', 'world'] split中不指定符号,默认是空格

str2 = '127.0.0.1'
print(str2.split('.'))  # ['127', '0', '0', '1']

 

  取出字符串中的每个字符

str1 = 'hello world'
for c in str1:
    print(c)

# h
# e
# l
# l
# o
# 
# w
# o
# r
# l
# d

 

  需要掌握的操作

    strip, lstrip, rstrip:strip之前说过了,l和r指的是只会去除哪一边的符号

    lower, upper:全部小写和全部大写

    startwith和endwith:见名知意,以什么开头和以什么结尾

    split和rsplit: rsplit从右到左切割字符串,可以指定切割次数,而split从左到右切割,可以指定次数

str1 = 'C:/a/b/c/d.txt'
# split会按照从左到右的顺序对字符串进行切割,可以指定切割次数
print(str1.split('/', 1))  # ['C:', 'a/b/c/d.txt']

 

    join:从可迭代对象中取出多个字符串,然后按照指定的分隔进行拼接,拼接的结果为字符串

print(" ".join("hello"))  # h e l l o
print("%".join("1234"))   # 1%2%3%4

 

    replace:替换子字符串

str1 = "my name is llll"
print(str1.replace('llll', 'zh'))  # my name is zh

 

    isdigit:判断字符串是否由纯数字组成

str1 = '12345'
print(str1.isdigit())   # True
str2 = '123g231'
print(str2.isdigit())   # False

 

  需要了解的操作

    find:从指定范围内查找子字符串和起始索引,找得到返回数字1,找不到返回-1

msg = 'tony say hello'
print(msg.find('o'))
print(msg.find('o', 1, 3))  # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引

    index:同find,但在找不到时会报错

    count:用法同find,统计子串或者字符出现的次数

    center,ljust,rjust,zfill:控制对齐和填充方式

name = 'tony'
print(name.center(30, '-'))  # -------------tony-------------
print(name.ljust(30, '*'))   # tony**************************
print(name.rjust(30, '*'))   # **************************tony
print(name.zfill(50))        # 0000000000000000000000000000000000000000000000tony

    captalize:首字母大写

    swapcase:大小写反转

    title:每个单词的首字母大写  

    对数字的判断

#在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

列表相关

  列表的定义

l1 = [1, 2, [1, 2]]

  类型转换

print(list('abcdefg'))                                  # ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(list({'name': 'li', 'age': 18, 'gender': None}))  # ['name', 'age', 'gender']
print(list((1, 2, 3, 4)))                               # [1, 2, 3, 4]
print(list({1, 2, 3, 4}))                               # [1, 2, 3, 4]
  需要掌握的操作

    通过索引取值

l1 = [1, 2, 4, 5]
print(l1[2])        # 4

    切片操作

l1 = [1, 2, 4, 5]
print(l1[0:3])      # [1, 2, 4]

    计算长度

l1 = [1, 2, 4, 5]
print(len(l1))      # 4

    成员运算

l1 = [1, 2, 4, 5]
print(1 in l1)      # True

    尾部追加元素

l1 = [1, 2, 4, 5]
l1.append(3)
print(l1)       # [1, 2, 4, 5, 3]

    一次性在尾部添加多个值

l1 = [1, 2, 4, 5]
l1.extend([88, 99, 100])
print(l1)       # [1, 2, 4, 5, 88, 99, 100]

    在指定位置插入元素

l1 = [1, 2, 4, 5]
l1.insert(0, 55)
print(l1)       # [55, 1, 2, 4, 5]

    根据索引删除元素

l1 = [1, 2, 4, 5]
del l1[2]
print(l1)       # [1, 2, 5]

    默认从列表中删除最后一个元素,可以加上索引,在指定位置删除

l1 = [1, 2, 4, 5]
l1.pop()
print(l1)       # [1, 2, 4]
l1.pop(1)
print(l1)       # [1, 4]

    根据元素值删除元素

l1 = [1, 2, 4, 5]
l1.remove(4)
print(l1)       # [1, 2, 5]

    颠倒列表中的元素

l1 = [1, 2, 4, 5]
l1.reverse()
print(l1)       # [5, 4, 2, 1]

    给所有元素排序

l1 = [1, 2, 4, 3, 5]
l1.sort()
print(l1)               # [1, 2, 3, 4, 5]
l1.sort(reverse=True)
print(l1)               # [5, 4, 3, 2, 1]
 

    我们常用数字类型比较大小,但是其实字符串、列表等都可以比较大小,比较的规则是:依次比较相同位置的元素大小,如果相同,则比较下一个位置,字符之间的大小取决于ASCII码

 

    循环遍历列表中的元素

l1 = [1, 2, 4, 3, 5]
for item in l1:
    print(item)
# 1
# 2
# 4
# 3
# 5
  需要了解的知识

    列表翻转

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

    反向步长

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

元组相关

  元组和列表类似,只不过元组是不可变对象而已

字典相关

  字典的类型转换

info = dict([['name', 'tony'], ('age', 18)])
print(info)         # {'name': 'tony', 'age': 18}

# fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
print({}.fromkeys(('name', 'age', 'sex'), None))        # {'name': None, 'age': None, 'sex': None}
  需要掌握的操作

    字典的取值

dic = {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball']}
print(dic['name'])      # xxx

    长度len()

    pop删除,通过指定key

    成员运算,判断的是某个值是不是字典的key

    获取所有的键和值

dic = {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball']}
print(dic.keys())       # dict_keys(['name', 'age', 'hobbies'])
print(dic.values())     # dict_values(['xxx', 18, ['play game', 'basketball']])
print(dic.items())      # dict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])])

    for循环默认只会遍历字典的key

    字典取值推荐使用的方法:get

dic = {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball']}
res = dic.get('xxx', 666)  # key不存在时,可以设置默认返回的值,不设置默认是None
print(res)                 # 666

    随机删除一组值

dic = {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball']}
item = dic.popitem()  # 随机删除一组值,并且把结果返回
print(item)           # ('hobbies', ['play game', 'basketball'])

    更新

dic = {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball']}
dic.update({'name': 'long', 'age': 3})
print(dic)      # {'name': 'long', 'age': 3, 'hobbies': ['play game', 'basketball']}

    key存在则不做任何修改,并且把这个key对应的value返回。key不存在则新增一组键值对

dic = {'k1': 111, 'k2': 222}
res = dic.setdefault('k3', 333)
print(res)  # 333
print(dic)  # {'k1': 111, 'k2': 222, 'k3': 333}
dic = {'k1': 111, 'k2': 222}
res = dic.setdefault('k1', 666)
print(res)  # 111
print(dic)  # {'k1': 111, 'k2': 222}

集合相关

s = set([1, 2, 3, 4, 5, 5])
print(s)                # {1, 2, 3, 4, 5}
s = {'name': 'jason'}
print(s)                # {'name'}
s = set('hello')
print(s)                # {'e', 'l', 'h', 'o'}

  集合可以去重,但是会打乱顺序

  集合有关系运算

s1 = {1, 2, 3, 4}
s2 = {2, 4, 6, 8}
print(s1 | s2)  # {1, 2, 3, 4, 6, 8}
print(s1 & s2)  # {2, 4}
print(s1 - s2)  # {1, 3}
print(s1 ^ s2)  # {1, 3, 6, 8}
s3 = {1, 2, 4}
s4 = {2, 4}
print(s3 > s4)  # True      
print(s3 >= s4)  # True 
print(s4 < s3)  # True
print(s4 <= s3)  # True

可变类型与不可变类型

  可变类型:值发生改变时,内存地址不变

  不可变类型:值发生改变时,内存地址也发生改变

  

  可变类型:列表,字典(value可以改变,但是key必须是不可变类型)

  不可变类型:数字,字符串,元组

 

posted @ 2021-08-14 09:36  晴天々⊙雨天  阅读(39)  评论(0)    收藏  举报