今天继续昨天的python基本数据类型详解,按照上一篇博文的格式,接下来讲解列表、元组、字典以及集合。

列表

1.用途
按位置存放多个值
2.定义
在[]内用逗号分割开多个任意类型的元素

# 定义列表
# 列表中可以是整型、浮点型、字符串、列表、字典等
msg = [123] # msg = list(123)
msg = [1,23,3.4,"as",[1,3,1],{"name":"zhang"}] # 列表转换,凡是可以for循环遍历的都可以转换
msg = list("123")
msg = list({"name":"zhang","age":18})

3、常用操作+内置的方法

  • 索引取值,可以正向和反向取,也可以根据索引修改列表
# 索引取值与索引改值
msg = [1,2.3,4]
msg[0] # 取到1
msg[2] = 3 # 将2号索引的值修改为3
# msg[4] = 5 # 如果索引超过了字符串的长度,会报错
  • 切片,list[开始:结束:步长]
# 切片,只能取到结束位置-1的长度
msg = [1,2,3,4]
msg[0:2:1] # 从0号索引取到1号索引,步长为1
msg[-1:-3:-1] # 反向取值
msg[:] # 默认取完,步长为1

【补充】
使用列表切片也可以实现列表元素的增删!

# 替换列表中的元素
l1 = [1,2,3,4]
l1[0:2] = ["a","b"] # 将l1中的[1,2]换成["a","b"]>>>["a","b",3,4]
l1[:] = ["hhh"] # 将整个列表元素换成"hhh"
l1[10:] = ["wwww"] # 如果切片的起始位置超过了列表的索引,代表在列表最后添加元素
l1[len(l1):] = ["插入"] # 相当于在列表末尾插入元素
# 在列表中插入元素
l1 = [1,2,3,4]
l1[1:1] = ["kkk"] # 在1号索引处插入"kkk"这个元素
l1[10:10] = ["hahaha"] # 如果索引超过列表的长度,在末尾插入元素
l1[len(l1):len(l1)] = ["xiha","heiheihei"] # 在末尾插入元素
print(l1)
# 删除
l1 = [1,2,3,4]
l1[0:2] = [] # 如果赋值的列表为空,则相当于删除元素
  • 长度len(),计算列表内的元素个数,即列表的长度
# 列表长度
msg = [1,2,3,4]
len(msg) # 返回列表长度:4
  • 成员运算in 和 not in
# 成员运算 in 和 not in
msg = [1,2,3,4]
1 in msg # 判断1在不在列表内,返回逻辑值:True
  • 添加元素
# 添加元素
msg = [1,2,3,4]
msg.append(7) # 在列表后面添加指定的值,没有返回值
msg.insert(0,3) # 两个参数为索引位置,需要添加的值,按照索引位置插入,不是改变,没有返回值
print(msg)
  • 删除元素
# 删除
msg = [1,2,3,4,5]
msg.remove(3) # 移除指定元素,没有返回值
# msg.remove(7) # 如果指定值不存在,就会报错
x = msg.pop(1) # 按照索引取走相应的值,有返回值,索引超过列表长度不会报错
  • 添加元素
# 删除
msg = [1,2,3,4,5]
msg.remove(3) # 移除指定元素,没有返回值
# msg.remove(7) # 如果指定值不存在,就会报错
x = msg.pop(1) # 按照索引取走相应的值,有返回值,索引超过列表长度会报错
print(x)
  • 循环
# 与for循环结合遍历
list1 = [111,222,333,444]
for i in list1:
print(i)
  • 其他需要掌握的方法
# count 计算列表中出现了多少次指定对象,有一个参数
list1 = [111,222,333,333,333,444,555]
print(list1.count(333)) # 333在列表中出现了3次 # reserve 颠倒原有元素的顺序,不会产生新的列表
list1= [99,33,22,11,-3,87]
list1.reverse()
print(list1) # clear 清除列表里的元素
list1 = [111,222,333,333,333,444,555]
list1.clear() # index()查找字符串子字符串第一次出现的位置索引,可以指定开始位置,和结束位置
msg = [1,2,3,4]
print(msg.index(2,0,3)) # 返回1
# msg.index(8) # 如果字符串中没有,会报错 # sort()根据参数进行排序
#cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
lis = [1,2,3,4,]
lis.sort(reverse=True) # extend()函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),没有返回值
list_1 = [1,2,3,4]
list_2 = [5,6]
list_1.extend(list_2) # list_1添加了list_2:[1,2,3,4,5,6]

4.总结
能存放多个值
可变类型

元组

1.用途
存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
2.定义
在()内用逗号分隔开多个任意类型的元素

# 元组定义
x = (10,) # x= tuple(...)
print(x,type(x))
# tuple数据类型转换:任意能够被for循环遍历的类型都可以交给tuple转成元组
print(tuple("hello"))

3.常用操作+内置的方法

元组的常用方法与列表及其相似

#1、按索引取值(正向取+反向取):只能取
t = (111,222,333,[44,555])
print(t[0])
t[0]=6666 #2、切片(顾头不顾尾,步长)
t = (111,222,333,[44,555])
print(t[0:3]) #3、长度
t = (111,222,333,[44,555])
print(len(t)) #4、成员运算in和not in
t = (111,222,333,[44,555])
print([44,555] in t) #5、循环
t = (111,222,333,[44,555])
for x in t:
print(x) #需要掌握的操作:
t = (111,222,333,[44,555])
t.index()
t.count()

4.总结
能存放多个值
不可变类型

字典

1.用途
按key:value的方式存储多个值
2.定义
在{}内用逗号分隔开多个元素,每个元素都是key:value的格式,其中value可以是任意类型,而key必须是不可变类型,通常是str类型,而且key不能重复

# 字典定义
dic = {111:6666,"k1":777,(1,2,3):8888,[1,2,3]:3333} # dic = dict(...)
dic = {111:6666,"k1":777,(1,2,3):8888,"k1":99999999} # dict数据类型转换
info = [('k1',111),('k2',222),('k3',3333)]
dic=dict(info)
print(dic)

3.常用操作+内置的方法

  1. 按照key取值,可存可取
# 按照key取值
dic = {"name":"egon","age":18}
x = dic["name"] # 取"name"下存储的值:"egon"
dic["age"] = 20 # 按照key修改字典里的值,将age下的值修改为20
  1. 长度len()
# 长度len()
dic = {"name":"egon","age":18}
x = len(dic) # 返回字典内键值对的个数:2
print(x)
  1. 成员运算in 和 not in,以key为准
#3、成员运算in和not in: 以key为准
dic = {"name":"egon","age":18}
print('name' in dic)
  1. 删除
# 取走,有返回值
v = dic.pop("name") # 删除指定的键值对,两个参数,在删除内容不存在时返回第二个参数,否则报错
m = dic.pop("dscjasjdb","None") # 要删除的内容不存在,所以最后返回"None"
print(v) x = dic.popitem() # 随机删除字典中的一个键值对,并且返回该键值对,(key,value)形式
print(x)
  1. 键keys(),值values(),键值对items()
#5、键keys(),值values(),键值对items()
dic = {"name":"zhang","age":18,"gender":"male","money":1000}
v = dic.keys() # 返回所有的key的列表
x = dic.values() # 返回所有value的列表
m = dic.items() # 返回(key,value)组成的列表
  1. 循环
# 循环
dic = {"name":"zhang","age":18,"gender":"male","money":1000}
for i in dic: # 遍历的是key值
print(i) for i in dic.keys(): # 遍历的也是key值
print(i) for i in dic.values(): # 遍历的是value值
print(i) for i in dic.items(): # 遍历得到的是(key,value)的键值对
print()
  1. get()
# get()
dic = {"name": "egon", "age": 18}
print(dic['namexxxx'])
print(dic.get("namexxxx")) # 取key对应的值
  1. 一些需要掌握的操作
# update(),如果增加的键值对不存在,则添加,如果key已存在,则更新对应的value
dic = {"name": "egon", "age": 18}
dic.update({'gender':"male","age":19}) # 添加"gender":"male",更新"age"的值为19
print(dic) # 快速创建字典
dic = {}.fromkeys(["name","age","gender"],[])
print(dic) # 创建字典:{'name': [], 'age': [], 'gender': []}
dic['name'].append(1111) # {'name': [1111], 'age': [1111], 'gender': [1111]}
# 因为使用的是同一个列表,所以改变其中一个其他的都会改变
print(dic) dic = {}.fromkeys(["name","age","gender"],None) # {'name': None, 'age': None, 'gender': None}
print(dic) # setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
v = dic.setdefault('name',"xxx")
print(dic)
print(v)

4、总结
可以存多个值
可变类型

元组

1、用途

  • 关系运算
  • 去重(不常用)

2、定义方式
在{}内用逗号分隔开多个元素,需要注意的是几何必须满足:

  • 集合内的元素必须是不可变类型
  • 集合的元素无序
  • 集合的元素没有重复
    空集合定义:
s = set()
x = {} # 代表的是空字典

3、常用操作+内置的方法

# 交集
a & b # 返回一新集合,集合共有的元素
a.intersection(b) # 同&
a.intersection_update(b), # 在原有的列表上移除非共有元素 # 并集,合并两个集合的所有元素
a | b # 返回一个新列表,合并了两个列表内的所有元素
a.union(b) # 同|
a.update(b) # 用此集合和其他集合的并集来更新集合,没有返回值
# 注意,update不仅可以合并集合,其中的参数还可以指定字符串、元组、列表、字典。
a.update("hahaha") # 将hahaha添加进a
a.update([123,345]) # 将列表的元素遍历添加进a
a.update({"hhh":"hh","kkk":"kk"}) # 遍历字典的key,并添加进集合 # 差集,移除两个列表中共有的元素
a - b # 返回一个新的集合
a.difference(b) # 同-
a.difference_update(b) # 在原集合上移除两个列表中共有的元素 # 对称差集,两个集合合并,去除共有的元素
(a -b) | (b -a)
a ^ b
a.symmetric_difference() # 同上
a.symmetric_difference_update() # 插入此集合和另一个集合的对称差集,不返回新的集合 # 添加元素
a.add("12c") # 添加指定元素
a.update("app") # update也可以用来添加元素 # 删除元素
# a.remove("1") remove可以删除指定元素,但是指定元素不存在时,会报错
a.discard() # 删除指定项目,指定元素不存在时,返回None,不会报错
a.pop() # 没有参数,随机删除 # 复制、清除
a.clear() # 没有参数,清除集合
a.copy() # 复制集合,浅层拷贝 # isdisjoint()
a.isdisjoint(b) # 判断两个集合有没有交集,返回布尔值 # 子集与夫集
x = {1,2,3}
y = {1,2} y <= x # 判断y是不是x的子集,返回布尔值
y.issubset(x) # 判断子集 x >= y # 判断x是不是y的父集,返回布尔值
x.issuperset(y) # 判断父集,返回布尔值

4、总结
可以存放多个值
可变类型

Python基础之数据类型详解(2)的更多相关文章

  1. Python基础之数据类型详解

    为什么会有数据类型? 在介绍具体的数据类型之前,需要了解为什么需要区分数据类型.我们知道,一个公司会有很多个大的部门,每个部门下又会有许多细分的小部门,构成了公司的完整体系结构.如果把python的数 ...

  2. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

  3. python基础知识——字符串详解

    大多数人学习的第一门编程语言是C/C++,个人觉得C/C++也许是小白入门的最合适的语言,但是必须承认C/C++确实有的地方难以理解,初学者如果没有正确理解,就可能会在使用指针等变量时候变得越来越困惑 ...

  4. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  5. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  6. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  7. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  8. Python数据类型详解——列表

    Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...

  9. Python数据类型详解——元组

    Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...

随机推荐

  1. set CSS style in js solutions All In One

    set CSS style in js solutions All In One css in js set each style property separately See the Pen se ...

  2. HTML5 stream video player

    HTML5 stream video player Aliplayer https://player.alicdn.com/aliplayer/index.html https://help.aliy ...

  3. Xpath in JavaScript

    test html <p>title</p> <ul class="list a" id="list"> <li> ...

  4. Puppeteer: 鼠标移动

    文档 mouse.click 是 mouse.move,mouse.down 和 mouse.up 的快捷方式 main.js const pptr = require('puppeteer'); c ...

  5. NGK治理机制研究

    治理机制是区块链项目的重要设计.随着项目的运行,生态中的参与者需要根据实际运行情况对项目进行必要的更新和升级,以使项目持续良性发展.治理机制的作用是使不同参与者最终达成共识.治理机制直接决定这个网络生 ...

  6. 源码分析:CyclicBarrier 之循环栅栏

    简介 CyclicBarrier 是一个同步辅助工具,允许一组线程全部等待彼此达到共同屏障点,且等待的线程被释放后还可以重新使用,所以叫做Cyclic(循环的). 应用场景 比如出去旅行时,导游需要等 ...

  7. Linux进程管理工具Supervisor的安装配置

    目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...

  8. 【随便写写】印象笔记,WordPress,CSDN 等 写博客的不同

    之前有的文章,写在了印象笔记里面,有的文章,写在了自己的WordPress博客里面,但是,感觉还是需要在主流平台分享一下文章的.就再次写写文章吧.(PS:公众号最重要的不是写作,而是排版) 说说几个这 ...

  9. 后端程序员之路 36、Apache Kafka

    Apache Kafkahttp://kafka.apache.org/ Kafka,很容易就联想到<海边的卡夫卡>,文艺程度和Casablanca有得一拼.Kafka是一个分布式消息系统 ...

  10. Pyqt5——带图标的表格(Model/View)

    需求:表格中第一列内容为学生学号,为了突出学号的表示,在第一列的学号旁增加学号图标. 实现:(1)使用Qt的model-view模式生成表格视图. (2)重写代理(QAbstractItemDeleg ...