Python数据类型

数据类型

什么是数据?

  • x=18,18是我们想要存储的数据

    为何数据要分不同的类型

  • 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示

    数据类型

  • 可变类型与不可变类型

    可变:在id不变的情况,值可以改变
    不可变:值不变,id不变

  1. 数字(整形,长整形,浮点型,复数)
  2. 字符串
  3. 字节串:在介绍字符编码时介绍字节bytes类型
  4. 列表
  5. 元组
  6. 字典
  7. 集合
  8. 布尔类型bool:True,False

    布尔类型bool

  • 所有数据类型,自带布尔值

    只有三种类型的值为False

    0
    None
    空:'',[],{}
    其余全部为真(True)

数字

整形int

  • 作用:用来表示年龄,等级,证件号等整数相关的

    定义: age=18 #实质age=int(18)

1.png

浮点型float

  • 作用:用来表示工资,身高,体重参数等有小数相关的

    定义: salary=180.25 #实质salary=float(180.25)

2.png

字符串(str)

  • 作用:用来表示名字、性别、地址等信息
  • 定义:在单引号、双引号或者三引号内,由一串字符组成

    name='jack' #name=str('jack')

基本使用

1、按索引取值(正向取+反向取) :只能取

  • 索引取值从0开始算起
>>>name='Hello jack'
>>>print(name[0])
H
>>>print(name[6])
o
>>>print(name[-1])
k

2、切片(顾头不顾尾,步长)

  • 取出我们想要部分的字符串
>>>res='my name is jack'
>>>print(res[0:7])
my name
>>>print(res[3:7])
name
>>>print(res[0:7:2])   #步长:每几个中取出一个
m ae

3、长度len

  • 统计字符的长度个数len(str)
>>>res='my name is jack'
>>>print(len(res))
15

4、移除空白strip

  • strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。
    注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
    语法:str.strip(str='')str -- 去除符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
  1. str.stiip()默认不加参数为去除两边空格
  2. str.lstrip()默认不加参数为去除左边空格
  3. str.rstrip()默认不加参数为去除右边空格
>>>name='##jack####'
>>>print(name.strip('#'))    #去除两边的符号
jack

>>>print(name.lstrip('#'))     #去除左边的符号
jack####

>>>print(name.rstrip('#'))    #去除右边的符号
##jack

>>>name='    jack       '
>>>print(name.strip())      #去除两边的空格
jack

5、切分split

  • split() 通过指定分隔符对字符串进行切片
    语法:str.split(str='',num)
    str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
    num -- 分割次数。默认为 -1, 即分隔所有。
  1. 用法 str.split()从左边开始像右边切除将其分成一列表的形式
  2. 用法 str.rsplit()从右边开始像左边切除将其分成一列表的形式
>>>res1='jack:18:age'
>>>res2=res1.split(':')    #以:形式切除所有位置
>>>res3=res1.split(':',1)    #切除左边一个位置
>>>res4=res1.rsplit(':',1)     #切除右边一个位置
>>>print(res2)
['jack', '18', 'age']
>>>print(res3)
['jack', '18:age']
>>>print(res4)
['jack:18', 'age']

6、连接join

  • join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
    语法:str.join(sequence) sequence -- 要连接的元素序列。
  1. 用法: join方法传入的列表必须只包含str类型的元素: ''.join(str)
>>>l=['jack', '18', 'age']
>>>res=''.join(l)    #以空格将其连接成字符串
>>>print(res)
jack18age
>>>res2=':'.join(l)     #以:将其连接成字符串
>>>print(res2)
jack:18:age

7、成员运算in和not in

  • 判断元素在不在其里面
    在里面则返回True ,否则返回False
>>>res='my name is jack'
>>>print('jack' in res)  
True
>>>print('jack'  not in res)
False

8、 format 格式化输出

  • str.format(),它增强了字符串格式化的功能。
    基本语法是通过 {} 和 : 来代替以前的 % 。
    format 函数可以接受不限个参数,位置可以不按顺序。

按默认位置传值

>>>s1='my name is %s my age is %s' %('jack',18)
>>>s2='my name is {} my age is {}'.format('jack',18)
>>>print(s1)
my name is jack my age is 18
>>>print(s2)
my name is jack my age is 18

按指定位置传值

>>>s1='my name is {0} my age is {1}'.format('jack',18)
>>>s2='my name is {1} my age is {0}'.format(18,'jack')
>>>s3='my name is {name} my age is {age}'.format(age=18,name='jack')
>>>print(s1)
my name is jack my age is 18
>>>print(s1)
my name is jack my age is 18
>>>print(s3)
my name is jack my age is 18

数字格式化

下表展示了 str.format() 格式化数字的多种方法

>>> print("{:.2f}".format(3.1415926));
3.14
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:+.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零(填充左边, 宽度为2)
5{:x<4d}5xxx数字补x(填充右边, 宽度为4)
10{:x<4d}10xx数字补x(填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:10d}     13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}    13中间对齐 (宽度为10)

9、大小写字符转换

  1. lower将字母转换成小写 语法:str.lower()
  2. upper将字母转换成大写 语法:str.upper()
>>>print('JACK'.lower())
jack
>>>print('jack'.upper())
JACK

10、字符串的替换replace

  • replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
    语法:str.replace(old, new[, max])
>>>res='hello jack jack'
>>>print(res.replace('jack','jie'))
hello jie jie
>>>print(res.replace('jack','jie',1))
hello jie jack

总结字符串类型

  1. 存一个值
    只能存一个值

  2. 有序or无序
    有序

  3. 可变or不可变
    !!!不可变:值变,id就变。不可变==可hash

列表(list)

  • 作用:多个爱好,多门课程,存放多个值
    定义:[]内可以有多个任意类型的值,逗号分隔
    list1=['h','e','l','l','o'] #等同于list1=list('hello')

基本使用常规操作

1、按索引存取值(正向存取+反向存取):即可改也可以取

>>>list1=['h','e','l','l','o']
>>>print(list1[1])
e
>>>print(list1[-1])
o
>>>list1[1]='w'
>>>print(list1)
['h', 'w', 'l', 'l', 'o']
>>>print(list1[1])
w

2、切片(顾头不顾尾,步长)

>>>l=['name','jack','age','18','python']
>>>print(l[0:2])
['name', 'jack']
>>>print(l[0:4:2])
['name', 'jack']

3、长度len

>>>l=['name','jack','age','18','python']
>>>print(len(l))
5

4、成员运算in和not in

>>>l=['name','jack','age','18','python']
>>>print('python' in l)
True

5、列表值的增加

列表末尾追加appen

  • append() 方法用于在列表末尾添加新的对象。
    语法:list.append(obj) obj -- 添加到列表末尾的对象。
>>>l=['name','jack','age','18']
>>>l.append('python')
>>>print(l)
['name', 'jack', 'age', '18', 'python']

列表指定位置插入insert

  • insert() 函数用于将指定对象插入列表的指定位置。
    语法:list.insert(index, obj)
    index -- 对象 obj 需要插入的索引位置。
    obj -- 要插入列表中的对象。
>>>l=['name','jack','age','18']
>>>l.insert(2,'python')
>>>print(l)
['name', 'jack', 'python', 'age', '18']

6、列表值的删除

有返回值的删除pop()

  • pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
    语法:list.pop([index])
    index-- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值
>>>l=['name','jack','age','18','python']
>>>l.pop()    # 默认删除末尾
'python'
>>>print(l)
['name', 'jack', 'age', '18']

没有返回值的删除remove()

  • remove() 函数用于移除列表中某个值的第一个匹配项。
    语法:list.remove(obj) obj -- 列表中要移除的对象,指定要删除的对象。
>>>l=['name','jack','age','18','python']
>>>l.remove('python')
>>>print(l)
['name', 'jack', 'age', '18']

7、反向输出元素

  • reverse() 函数用于反向列表中元素。
    语法:list.reverse()
>>>l=['name','jack','age','18','python']
>>>print(l.reverse())
['python', '18', 'age', 'jack', 'name']

8、列表排序

  • sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
    语法:list.sort(cmp=None, key=None, reverse=False)
    cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
>>> l=[1,5,2,9,6,8]
>>> l.sort()
>>> print(l)
[1, 2, 5, 6, 8, 9]
>>>l.sort(reverse=True)
>>>print(l)
[9, 8, 6, 5, 2, 1]

9、统计元素出现次数

  • count() 方法用于统计某个元素在列表中出现的次数。
    语法:list.count(obj) obj -- 列表中统计的对象。
>>>l=['hello','jack',18,'jack']
>>>l.count('jack')
2

10、查看元素出现的位置(索引)

  • index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
    语法:list.index(obj) obj--查找的元素
>>>l=['hello','jack',18,'jack']
>>>l.index('jack')
1
>>>l.index(18,1,3)
2

11、循环

依赖索引

l=['name','jack','age','18','python']
i=0
while i < len(l):
    print(l[i])
    i+=1
依次取出列表的元素
for i in range(len(l)):
    print(i,l[i])

不依赖索引

for item  in l:
    print(item)

补充for循环

for i in range(0,5,2):     #0  2  4
    print(i)
for i in range(10):    #默认从零起始
    print(i)

for i in range(10,-2,-1):  # 10 9 8 ...
    print(i)

总结列表类型

  1. 存多个值
  2. 有序
  3. 可变

元组(tuple)

  • 作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
    定义:t=(1,2,3,4) 实质是t=tuple((1,2,3,4))

1、按索引取值(正向取+反向取):只能取

>>>t=('abc')
>>>t[0]
1
>>>t[-1]
4

2、切片(顾头不顾尾,步长)

>>>t=(1,2,3,4,5,6,7,8)
>>>t[0:3]
(1, 2, 3)
>>>t[0:5:2]    # 每两个取一个
(1, 3, 5)

3、长度len

>>>t=(1,2,3,4)
>>>len(t)
4

4、成员运算in和not in

>>>t=(1,2,3,4)
>>>print(1 in t)
True

5、统计元素出现次数

  • count() 方法用于统计某个元素在列表中出现的次数。
    语法:tuple.count(obj) obj -- 列表中统计的对象。
>>>t=(1,2,3,5,1,12,1,2)
>>> t.count(1)
3

6、查看元素出现的位置(索引)

  • index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
    语法:tuple.index(obj) obj--查找的元素
>>>t=(1,2,3,5,1,12,1,2)
>>>t.index(3)
2

该类型总结

  1. 存多个值
  2. 有序
  3. 不可变

字典(dict)

  • 作用:存多个值,key-value存取,取值速度快
    定义:{}内以逗号分隔多个元素,格式为key:value,
    key必须是不可变类型,value可以是任意类型
  1. dic={'name':'jack','age':18,'sex':'male'} #本质dic=dict({....})
  2. dic=dict(name='egon',age=18,sex='male')
  3. dic=dict([['name','egon'],('age',18)])

1、按key存取值:可存可取可改

>>>dic={'name':'jack'}
>>>dic['age']=18
>>>print(dic)
{'name': 'jack', 'age': 18}
>>>print(dic['name'])
jack
>>>dic['name']='JACK'
>>>print(dic)
{'name': 'JACK', 'age': 18}

2、长度len

  • 字典长度为计算键值key的长度
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>len(dic)
3

3、成员运算in和not in

  • 判断的字典的key
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>print('name' in dic)
True
>>>print('jack' in dic)
False

4、删除值

有返回值的删除pop

  • 存在key时则返回key对应的value,若不存在则返回自定义的
    定义dic.pop(key,None) key--为字典的k,None--当对象不存在时返回的值
1. 当key存在时
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>res=dic.pop('name')
>>>print(res)
jack
>>>print(dic)
{'age': 18, 'sex': 'male'}
2. 当key不存在时
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>res=dic.pop('xxx','key不存在')
>>>print(res)
'key不存在'
>>>print(dic)
{'name': 'jack', 'age': 18, 'sex': 'male'}

没有返回值的删除

>>>dic={'name':'jack','age':18,'sex':'male'}
>>>del dic['age']
>>>print(dic)
{'name': 'jack', 'sex': 'male'}

删除整个字典del

>>>dic={'name':'jack','age':18,'sex':'male'}
>>>del dic

5、键keys(),值values(),键值对items()

  • 依次取出健跟值
>>>dic={'name':'jack','age':18}
>>>print(dic.keys())   #看字典中有那些健key
dict_keys(['name', 'age'])
>>>print(dic.values())  #查看字典中有哪些值value
dict_values(['jack', 18])
>>>print(dic.items())  #查看键值对应以关系
dict_items([('name', 'jack'), ('age', 18)])
  • 用循环遍历取值
dic={'name':'jack','age':18}

for key in dic.keys(): #只取出健key
    print(key)

for value in dic.values():  #只取出字典的值value
    print(value)

for k,v in dic.items():  #k,v=('name', 'jack')
    print(k,v)

6、字典更新修改

  • 对与老字典来说,更新指的是,新字典中有而老字典中没有则添加,新有而老有,则覆盖
    定义;dict.update({key:value})
>>>dic={'name':'jack','age':18}
>>>dic.update({'age':20,'sex':'male'})
>>>print(dic)
{'name': 'jack', 'age': 20, 'sex': 'male'}

7、setdefaul的用处

1、字典有中有key,则不修改,返回原key对应的原值

>>>dic={'name':'jack','age':18}
>>>res=dic.setdefault('name','JACK')
>>>print('返回值:',res)
返回值: jack
>>>print(dic)
{'name': 'jack', 'age': 18}

2、没有对应的key,则添加,返回添加的key对应的value

>>>dic={'name':'jack'}
>>>res=dic.setdefault('age',18)
>>>print('返回值:',res)
返回值: 18
>>>print(dic)
{'name': 'jack', 'age': 18}

字典类型总结

  1. 存多个值
  2. 无序
  3. 可变

集合(set)

  • 集合(set)是一个无序的不重复元素序列。
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
  1. 作用:去重,集合内没有相同的元素

1、去重

>>>s={'python','orcl','web','python'}
>>>print(s)
{'web', 'python', 'orcl'}

2、集合运算关系

1、交集('&')

  • 即学习了python又学习了web的人(学习了相同课程的人)
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a & b)
{'python', 'web'}

2、并集('|')

  • 所有学习的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a | b)
{'orcl', 'mysql', 'web', 'C语言', 'linux', 'python'}

3、差集('-')

  • 只有a中才有的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a - b)
{'linux', 'mysql'}

4、交叉补集('^')

  • 没有被同时学习的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a ^ b)
{'orcl', 'mysql', 'C语言', 'linux'}

3、长度len

>>>a={'python','linux','web','mysql'}
>>>len(a)
4

4、成员运算in 和not in

>>>s={1,2,3,4,5,6}
>>>print(1 in s)
True

5、增加值

1.一次添加一个值(add())

定义:set.add(ord) ord--添加得对象

>>>s={'a','b','c'}
>>>s.add('d')
>>>print(s)
{'c', 'b', 'd', 'a'}

2.一次添加多个值(update())

  • 定义:set.update({})
>>>s={'a','b','c'}
>>>s.update({1,2,3})
>>>print(s)
{'c', 1, 2, 3, 'b', 'a'}

6、删除值

1.pop()随机删除一个

>>>s={'a','b','c'}
>>>s.pop()  #随机删除其中一个值a,b或者c
>>>print(s)
{'b', 'a'}    或  {'a','c'}   或  {'b','c'}

2.discard() 当删除的元素不存在的时候,不会报错

>>>s={'a','b','c'}
>>> s.discard('d')   #不会报错程序正常执行
>>>print(s)
{'c', 'b', 'a'}
>>>s.discard('a')  #删除元素a
{'c', 'b'}

3.remove() 当删除的元素不存在的时候,报错

>>>s={'a','b','c'}
>>>s.remove('d')    #程序报错找不到值抛出异常
>>>s.remove('b')   # 删除元素b
>>>print(s)
{'c', 'a'}

总结集合类型

  1. 无序
  2. 不可变
  3. 没有重复的值

    ---恢复内容结束---

    # 数据类型

    什么是数据?

  • x=18,18是我们想要存储的数据

    为何数据要分不同的类型

  • 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示

    数据类型

  • 可变类型与不可变类型

    可变:在id不变的情况,值可以改变
    不可变:值不变,id不变

  1. 数字(整形,长整形,浮点型,复数)
  2. 字符串
  3. 字节串:在介绍字符编码时介绍字节bytes类型
  4. 列表
  5. 元组
  6. 字典
  7. 集合
  8. 布尔类型bool:True,False

    布尔类型bool

  • 所有数据类型,自带布尔值

    只有三种类型的值为False

    0
    None
    空:'',[],{}
    其余全部为真(True)

数字

整形int

  • 作用:用来表示年龄,等级,证件号等整数相关的

    定义: age=18 #实质age=int(18)

1.png

浮点型float

  • 作用:用来表示工资,身高,体重参数等有小数相关的

    定义: salary=180.25 #实质salary=float(180.25)

2.png

字符串(str)

  • 作用:用来表示名字、性别、地址等信息
  • 定义:在单引号、双引号或者三引号内,由一串字符组成

    name='jack' #name=str('jack')

基本使用

1、按索引取值(正向取+反向取) :只能取

  • 索引取值从0开始算起
>>>name='Hello jack'
>>>print(name[0])
H
>>>print(name[6])
o
>>>print(name[-1])
k

2、切片(顾头不顾尾,步长)

  • 取出我们想要部分的字符串
>>>res='my name is jack'
>>>print(res[0:7])
my name
>>>print(res[3:7])
name
>>>print(res[0:7:2])   #步长:每几个中取出一个
m ae

3、长度len

  • 统计字符的长度个数len(str)
>>>res='my name is jack'
>>>print(len(res))
15

4、移除空白strip

  • strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。
    注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
    语法:str.strip(str='')str -- 去除符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
  1. str.stiip()默认不加参数为去除两边空格
  2. str.lstrip()默认不加参数为去除左边空格
  3. str.rstrip()默认不加参数为去除右边空格
>>>name='##jack####'
>>>print(name.strip('#'))    #去除两边的符号
jack

>>>print(name.lstrip('#'))     #去除左边的符号
jack####

>>>print(name.rstrip('#'))    #去除右边的符号
##jack

>>>name='    jack       '
>>>print(name.strip())      #去除两边的空格
jack

5、切分split

  • split() 通过指定分隔符对字符串进行切片
    语法:str.split(str='',num)
    str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
    num -- 分割次数。默认为 -1, 即分隔所有。
  1. 用法 str.split()从左边开始像右边切除将其分成一列表的形式
  2. 用法 str.rsplit()从右边开始像左边切除将其分成一列表的形式
>>>res1='jack:18:age'
>>>res2=res1.split(':')    #以:形式切除所有位置
>>>res3=res1.split(':',1)    #切除左边一个位置
>>>res4=res1.rsplit(':',1)     #切除右边一个位置
>>>print(res2)
['jack', '18', 'age']
>>>print(res3)
['jack', '18:age']
>>>print(res4)
['jack:18', 'age']

6、连接join

  • join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
    语法:str.join(sequence) sequence -- 要连接的元素序列。
  1. 用法: join方法传入的列表必须只包含str类型的元素: ''.join(str)
>>>l=['jack', '18', 'age']
>>>res=''.join(l)    #以空格将其连接成字符串
>>>print(res)
jack18age
>>>res2=':'.join(l)     #以:将其连接成字符串
>>>print(res2)
jack:18:age

7、成员运算in和not in

  • 判断元素在不在其里面
    在里面则返回True ,否则返回False
>>>res='my name is jack'
>>>print('jack' in res)  
True
>>>print('jack'  not in res)
False

8、 format 格式化输出

  • str.format(),它增强了字符串格式化的功能。
    基本语法是通过 {} 和 : 来代替以前的 % 。
    format 函数可以接受不限个参数,位置可以不按顺序。

按默认位置传值

>>>s1='my name is %s my age is %s' %('jack',18)
>>>s2='my name is {} my age is {}'.format('jack',18)
>>>print(s1)
my name is jack my age is 18
>>>print(s2)
my name is jack my age is 18

按指定位置传值

>>>s1='my name is {0} my age is {1}'.format('jack',18)
>>>s2='my name is {1} my age is {0}'.format(18,'jack')
>>>s3='my name is {name} my age is {age}'.format(age=18,name='jack')
>>>print(s1)
my name is jack my age is 18
>>>print(s1)
my name is jack my age is 18
>>>print(s3)
my name is jack my age is 18

数字格式化

下表展示了 str.format() 格式化数字的多种方法

>>> print("{:.2f}".format(3.1415926));
3.14
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:+.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零(填充左边, 宽度为2)
5{:x<4d}5xxx数字补x(填充右边, 宽度为4)
10{:x<4d}10xx数字补x(填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:10d}     13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}    13中间对齐 (宽度为10)

9、大小写字符转换

  1. lower将字母转换成小写 语法:str.lower()
  2. upper将字母转换成大写 语法:str.upper()
>>>print('JACK'.lower())
jack
>>>print('jack'.upper())
JACK

10、字符串的替换replace

  • replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
    语法:str.replace(old, new[, max])
>>>res='hello jack jack'
>>>print(res.replace('jack','jie'))
hello jie jie
>>>print(res.replace('jack','jie',1))
hello jie jack

总结字符串类型

  1. 存一个值
    只能存一个值

  2. 有序or无序
    有序

  3. 可变or不可变
    !!!不可变:值变,id就变。不可变==可hash

列表(list)

  • 作用:多个爱好,多门课程,存放多个值
    定义:[]内可以有多个任意类型的值,逗号分隔
    list1=['h','e','l','l','o'] #等同于list1=list('hello')

基本使用常规操作

1、按索引存取值(正向存取+反向存取):即可改也可以取

>>>list1=['h','e','l','l','o']
>>>print(list1[1])
e
>>>print(list1[-1])
o
>>>list1[1]='w'
>>>print(list1)
['h', 'w', 'l', 'l', 'o']
>>>print(list1[1])
w

2、切片(顾头不顾尾,步长)

>>>l=['name','jack','age','18','python']
>>>print(l[0:2])
['name', 'jack']
>>>print(l[0:4:2])
['name', 'jack']

3、长度len

>>>l=['name','jack','age','18','python']
>>>print(len(l))
5

4、成员运算in和not in

>>>l=['name','jack','age','18','python']
>>>print('python' in l)
True

5、列表值的增加

列表末尾追加appen

  • append() 方法用于在列表末尾添加新的对象。
    语法:list.append(obj) obj -- 添加到列表末尾的对象。
>>>l=['name','jack','age','18']
>>>l.append('python')
>>>print(l)
['name', 'jack', 'age', '18', 'python']

列表指定位置插入insert

  • insert() 函数用于将指定对象插入列表的指定位置。
    语法:list.insert(index, obj)
    index -- 对象 obj 需要插入的索引位置。
    obj -- 要插入列表中的对象。
>>>l=['name','jack','age','18']
>>>l.insert(2,'python')
>>>print(l)
['name', 'jack', 'python', 'age', '18']

6、列表值的删除

有返回值的删除pop()

  • pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
    语法:list.pop([index])
    index-- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值
>>>l=['name','jack','age','18','python']
>>>l.pop()    # 默认删除末尾
'python'
>>>print(l)
['name', 'jack', 'age', '18']

没有返回值的删除remove()

  • remove() 函数用于移除列表中某个值的第一个匹配项。
    语法:list.remove(obj) obj -- 列表中要移除的对象,指定要删除的对象。
>>>l=['name','jack','age','18','python']
>>>l.remove('python')
>>>print(l)
['name', 'jack', 'age', '18']

7、反向输出元素

  • reverse() 函数用于反向列表中元素。
    语法:list.reverse()
>>>l=['name','jack','age','18','python']
>>>print(l.reverse())
['python', '18', 'age', 'jack', 'name']

8、列表排序

  • sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
    语法:list.sort(cmp=None, key=None, reverse=False)
    cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
>>> l=[1,5,2,9,6,8]
>>> l.sort()
>>> print(l)
[1, 2, 5, 6, 8, 9]
>>>l.sort(reverse=True)
>>>print(l)
[9, 8, 6, 5, 2, 1]

9、统计元素出现次数

  • count() 方法用于统计某个元素在列表中出现的次数。
    语法:list.count(obj) obj -- 列表中统计的对象。
>>>l=['hello','jack',18,'jack']
>>>l.count('jack')
2

10、查看元素出现的位置(索引)

  • index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
    语法:list.index(obj) obj--查找的元素
>>>l=['hello','jack',18,'jack']
>>>l.index('jack')
1
>>>l.index(18,1,3)
2

11、循环

依赖索引

l=['name','jack','age','18','python']
i=0
while i < len(l):
    print(l[i])
    i+=1
依次取出列表的元素
for i in range(len(l)):
    print(i,l[i])

不依赖索引

for item  in l:
    print(item)

补充for循环

for i in range(0,5,2):     #0  2  4
    print(i)
for i in range(10):    #默认从零起始
    print(i)

for i in range(10,-2,-1):  # 10 9 8 ...
    print(i)

总结列表类型

  1. 存多个值
  2. 有序
  3. 可变

元组(tuple)

  • 作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
    定义:t=(1,2,3,4) 实质是t=tuple((1,2,3,4))

1、按索引取值(正向取+反向取):只能取

>>>t=('abc')
>>>t[0]
1
>>>t[-1]
4

2、切片(顾头不顾尾,步长)

>>>t=(1,2,3,4,5,6,7,8)
>>>t[0:3]
(1, 2, 3)
>>>t[0:5:2]    # 每两个取一个
(1, 3, 5)

3、长度len

>>>t=(1,2,3,4)
>>>len(t)
4

4、成员运算in和not in

>>>t=(1,2,3,4)
>>>print(1 in t)
True

5、统计元素出现次数

  • count() 方法用于统计某个元素在列表中出现的次数。
    语法:tuple.count(obj) obj -- 列表中统计的对象。
>>>t=(1,2,3,5,1,12,1,2)
>>> t.count(1)
3

6、查看元素出现的位置(索引)

  • index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
    语法:tuple.index(obj) obj--查找的元素
>>>t=(1,2,3,5,1,12,1,2)
>>>t.index(3)
2

该类型总结

  1. 存多个值
  2. 有序
  3. 不可变

字典(dict)

  • 作用:存多个值,key-value存取,取值速度快
    定义:{}内以逗号分隔多个元素,格式为key:value,
    key必须是不可变类型,value可以是任意类型
  1. dic={'name':'jack','age':18,'sex':'male'} #本质dic=dict({....})
  2. dic=dict(name='egon',age=18,sex='male')
  3. dic=dict([['name','egon'],('age',18)])

1、按key存取值:可存可取可改

>>>dic={'name':'jack'}
>>>dic['age']=18
>>>print(dic)
{'name': 'jack', 'age': 18}
>>>print(dic['name'])
jack
>>>dic['name']='JACK'
>>>print(dic)
{'name': 'JACK', 'age': 18}

2、长度len

  • 字典长度为计算键值key的长度
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>len(dic)
3

3、成员运算in和not in

  • 判断的字典的key
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>print('name' in dic)
True
>>>print('jack' in dic)
False

4、删除值

有返回值的删除pop

  • 存在key时则返回key对应的value,若不存在则返回自定义的
    定义dic.pop(key,None) key--为字典的k,None--当对象不存在时返回的值
1. 当key存在时
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>res=dic.pop('name')
>>>print(res)
jack
>>>print(dic)
{'age': 18, 'sex': 'male'}
2. 当key不存在时
>>>dic={'name':'jack','age':18,'sex':'male'}
>>>res=dic.pop('xxx','key不存在')
>>>print(res)
'key不存在'
>>>print(dic)
{'name': 'jack', 'age': 18, 'sex': 'male'}

没有返回值的删除

>>>dic={'name':'jack','age':18,'sex':'male'}
>>>del dic['age']
>>>print(dic)
{'name': 'jack', 'sex': 'male'}

删除整个字典del

>>>dic={'name':'jack','age':18,'sex':'male'}
>>>del dic

5、键keys(),值values(),键值对items()

  • 依次取出健跟值
>>>dic={'name':'jack','age':18}
>>>print(dic.keys())   #看字典中有那些健key
dict_keys(['name', 'age'])
>>>print(dic.values())  #查看字典中有哪些值value
dict_values(['jack', 18])
>>>print(dic.items())  #查看键值对应以关系
dict_items([('name', 'jack'), ('age', 18)])
  • 用循环遍历取值
dic={'name':'jack','age':18}

for key in dic.keys(): #只取出健key
    print(key)

for value in dic.values():  #只取出字典的值value
    print(value)

for k,v in dic.items():  #k,v=('name', 'jack')
    print(k,v)

6、字典更新修改

  • 对与老字典来说,更新指的是,新字典中有而老字典中没有则添加,新有而老有,则覆盖
    定义;dict.update({key:value})
>>>dic={'name':'jack','age':18}
>>>dic.update({'age':20,'sex':'male'})
>>>print(dic)
{'name': 'jack', 'age': 20, 'sex': 'male'}

7、setdefaul的用处

1、字典有中有key,则不修改,返回原key对应的原值

>>>dic={'name':'jack','age':18}
>>>res=dic.setdefault('name','JACK')
>>>print('返回值:',res)
返回值: jack
>>>print(dic)
{'name': 'jack', 'age': 18}

2、没有对应的key,则添加,返回添加的key对应的value

>>>dic={'name':'jack'}
>>>res=dic.setdefault('age',18)
>>>print('返回值:',res)
返回值: 18
>>>print(dic)
{'name': 'jack', 'age': 18}

字典类型总结

  1. 存多个值
  2. 无序
  3. 可变

集合(set)

  • 集合(set)是一个无序的不重复元素序列。
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
  1. 作用:去重,集合内没有相同的元素

1、去重

>>>s={'python','orcl','web','python'}
>>>print(s)
{'web', 'python', 'orcl'}

2、集合运算关系

1、交集('&')

  • 即学习了python又学习了web的人(学习了相同课程的人)
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a & b)
{'python', 'web'}

2、并集('|')

  • 所有学习的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a | b)
{'orcl', 'mysql', 'web', 'C语言', 'linux', 'python'}

3、差集('-')

  • 只有a中才有的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a - b)
{'linux', 'mysql'}

4、交叉补集('^')

  • 没有被同时学习的课程
>>>a={'python','linux','web','mysql'}
>>>b={'C语言','python','orcl','web'}
>>>print(a ^ b)
{'orcl', 'mysql', 'C语言', 'linux'}

3、长度len

>>>a={'python','linux','web','mysql'}
>>>len(a)
4

4、成员运算in 和not in

>>>s={1,2,3,4,5,6}
>>>print(1 in s)
True

5、增加值

1.一次添加一个值(add())

定义:set.add(ord) ord--添加得对象

>>>s={'a','b','c'}
>>>s.add('d')
>>>print(s)
{'c', 'b', 'd', 'a'}

2.一次添加多个值(update())

  • 定义:set.update({})
>>>s={'a','b','c'}
>>>s.update({1,2,3})
>>>print(s)
{'c', 1, 2, 3, 'b', 'a'}

6、删除值

1.pop()随机删除一个

>>>s={'a','b','c'}
>>>s.pop()  #随机删除其中一个值a,b或者c
>>>print(s)
{'b', 'a'}    或  {'a','c'}   或  {'b','c'}

2.discard() 当删除的元素不存在的时候,不会报错

>>>s={'a','b','c'}
>>> s.discard('d')   #不会报错程序正常执行
>>>print(s)
{'c', 'b', 'a'}
>>>s.discard('a')  #删除元素a
{'c', 'b'}

3.remove() 当删除的元素不存在的时候,报错

>>>s={'a','b','c'}
>>>s.remove('d')    #程序报错找不到值抛出异常
>>>s.remove('b')   # 删除元素b
>>>print(s)
{'c', 'a'}

总结集合类型

  1. 无序
  2. 不可变
  3. 没有重复的值

转载于:https://www.cnblogs.com/wenyongjie/p/11137231.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值