2、列表的相关函数

append、insert、extend、pop、remove、clear、index、count、sort、reverse、del

(1)增:有三个方法

  • append 向列表末尾添加新的元素
  • insert 向指定索引前添加新的元素,必须设置参数,否则会报错;当插入的列表为空时,参数为0也可执行插入操作
  • extend 迭代追加所有元素(迭代追加字典类型只会获取到键添加进去)

(2)删:有4个方法

  • pop 通过索引删除指定元素(无参数默认删除最后一个,可获取已删元素内容);注:删除元素后列表的索引会发生变化
  • remove 通过赋予的值来删除,如果有多个,默认删除第一个(不可获取已删元素内容);不可同时删除多个,删除的元素不在列表中时程序报错,无默认删除使用remove必须设置参数
  • clear 清空列表,清除所有元素
  • del 可一次性删除多个

(3)改、查和排序

  • index 获取列表中值的索引
  • count 获取列表中某个元素的数量
  • sort 列表排序,对数字排序,默认从小到大,可使用参数 reverse = True;对字母排序,根据ASCII码表编码进行比较;可以对中文进行排序,但是无规律可循。注:当出现数字字符串,字母字符串,文字字符串混合时会出现特殊情况:数字字符串永远在 > 字母字符串 > 文字字符串
  • reverse 列表反转,就是反转,从后往前调换
# append
listvar = ['asd']
listvar.append('zsd')
listvar.append(['pas'])
listvar.append(('ple'))
listvar.append({'plp'})
listvar.append({'a': 'b'})
listvar.append(1)
print(listvar)# insert
listvar = ['asd']
listvar.insert(1, 'pdd')
listvar.insert(1, ['pas'])
listvar.insert(1, ('ple'))
listvar.insert(1, {'plp'})
listvar.insert(1, {'a': 'b'})
listvar.insert(1, 1)
print(listvar)# extend
listvar = ['asd']
tup1 = ['a', 'b', 'c']
tup2 = ('a', 'b', 'c')
tup3 = {'a', 'b', 'c'}
tup4 = {'a': 'b', 'd': 'd'}
tup5 = 'asd'
listvar.extend(tup5)
print(listvar)# pop
lst = ['阿凡达', '阿迪达斯', '史莱姆']
res = lst.pop()
ret = lst.pop(1)
print(res, ret, lst)# remove
lst = ['阿凡达', '阿迪达斯', '史莱姆']
lst.remove('阿凡达')
lst.remove('阿迪达斯')
print(lst)# clear
lst = ['阿凡达', '阿迪达斯', '史莱姆']
lst.clear()
print(lst)# index
lst = ['阿凡达', '阿迪达斯', '史莱姆']
ret1 = lst.index('阿迪达斯')
ret2 = lst.index('阿凡达')
print(ret1, ret2)# count
lst = ['阿凡达', '阿迪达斯', '史莱姆', '阿迪达斯', '阿迪达斯',]
ret = lst.count('阿迪达斯')
print(ret)# sort:纯数字
lst = [100, 20, -1, -30, 0, 10]
lst.sort()
lst.sort(reverse=True)
print(lst)# sort:纯字母
lst = ['part', 'nepenthe', 'forget', 'me', 'not']
lst.sort()
print(lst)# sort:数字字符串,字母字符串,文字字符串混合使用时:数字字符串>字母字符串>文字字符串
lst = ['王闻', '周杰伦', '罗志祥', 'me', 'not', 'afas', '12', '2', '30']
lst.sort()
print(lst)# reverse列表反转,就是反转,从后往前调换
lst = [100, 20, -1, -30, 0, 10]
lst.reverse()
print(lst)

3、深浅拷贝

浅拷贝和深拷贝

# 未使用深浅拷贝的状态
lst1 = [1, 2, 3]
lst2 = lst1
lst1.append(4)
print(lst2)

浅拷贝:

​ 方法一:copy方法只针对列表

# copy()
lst = [1, 2, 3]
lst2 = lst.copy()
lst.append(5)
print(lst)
print(lst2)

​ 方法二:引入模块,copy.copy(任意类型)

​ 浅拷贝只拷贝一级所有的元素

# copy.copy()
import copy
lst = [1, 2, 3]
lst2 = copy.copy(lst)
lst.append(5)
print(lst)
print(lst2)

深拷贝:

​ 引入copy模块,使用copy.deepcopy()可将所有层级的元素都拷贝一份,不会被拷贝之前的数据影响,单独开辟的空间;copy和deepcopy,copy更快一些,也就是浅拷贝效率高;深拷贝也可以应用在字典中

​ (地址:原来不可变只是暂时的指向,可变的数据独立的开辟空间)

import copy
lst = [1, 2, 3, [4, 5, 6]]
lst2 = copy.deepcopy(lst)
lst[-1].append(7)
print(lst)
print(lst2)

4、元组

特点:可查询,不可修改,有序

元组只有两个函数:count和 index,和列表中的使用方式相同

八、字典

1、字典相关函数

fromkeys、append、pop、popitem、clear、update、get、key、values、items

(1)增:三种方式(实质上是两种,append是列表的方法)

  • 直接定义赋值:直接使用类似 dic[‘dic’]=‘dic’ 的方式

  • fromkeys:使用一组键和默认值创建字典,注:添加值的时候会自动给所有键对应的值都添加上

  • append:要先创建一个未赋值的键值对并且值是一个列表,才可使用append进行赋值操作,否则将会报错

(2)删:有三个方法

  • pop:通过键删除键值对(可设置默认值,避免删除的键值对不存在时报错),可以字符串的形式获取到删除的键值对
  • popitem:删除最后一个键值对,可以元组的形式获取到删除的键值对;空字典会报错
  • clear:清空字典,只剩一组括号

(3)改

  • update:可批量更新(当出现不存在的键值对时会默认添加进去)

    有三种书写方式:直接在update中写入字典;先定义字典一个字典,再在update中传入定义的字典;通过

    键=值 的方式直接写入update中

(4)查:四个方法

  • get:通过键获取值,当没有获取到的键会返回None,也可设置默认值(未获取到键就返回设置的默认值)
  • key:将字典的键组成新的可迭代对象,注:组成的新的可迭代对象的数据类型不是list列表,而是dict_keys数据类型
  • values:将字典的值组成新的可迭代对象,注:组成的新的可迭代对象的数据类型不是list列表,而是dict_values数据类型
  • items:将字典的键值对凑成一个个元组,组成新的可迭代对象,注:组成的新的可迭代对象的数据类型不是tuple元组,而是dict_values数据类型
# 直接定义赋值
dic = {}
dic['alex'] = 'old boy'
dic['xboyww'] = 'young boy'
print(dic)# fromkeys
lst = ['a', 'b', 'c']
dic = {}.fromkeys(lst, [1, 2, 3])
dic = {}.fromkeys(lst, None)
print(dic)lst = ['a', 'b', 'c']
dic = {}.fromkeys(lst, [1, 2, 3])
dic['a'].append(4)
print(dic)# append 只针对值是列表的类型
dic = {}
dic["a"] = []
dic["b"] = []
dic["a"].append(1)
dic['b'].append(2)
print(dic)# pop
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
ret = dic.pop('top')
rets = dic.pop('down', '无此键值对')
print(type(ret), dic, type(rets))# popitem
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
res = dic.popitem()
print(type(res), dic)# clear
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
dic.clear()
print(dic, type(dic))# update 第一种写法
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
dic.update({'top': 'all right'})
dic.update({'down': 'all right', 'downs': 'all right'})
dics = {'down': 'all right', 'downs': 'all right'}
dic.update(dic)
print(dic)# update 第二种写法
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
dic.update(top='all right', down='all right')
print(dic)# get
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
ret = dic.get('top')
res = dic.get('tops')
rets = dic.get('tops', '此键不存在')
print(ret, res, rets)# keys
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
ret = dic.keys()
print(ret, type(ret))# values
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
res = dic.values()
print(res, type(res))
dic = {'alex': 'good', 'ww': 'very good', 'top': 'all fake'}
ret = dic.items()
print(ret, type(ret))# 变量的解包
for k, v in ret:print(k, v)

九、集合

1、集合的相关操作(交叉并补)

交集、差集、并集、对称差集、补集(包含关系才有补集)、

(1)交集 intersection()简写 &

(2)差集 difference()简写 -

(3)并集 union()简写 |

(4)对称差集 symmetric_difference()简写 ^ (包含补集的情况)

(5)子集 issubset()简写 <

(6)父集 issuperset()简写 >

(7)isdisjoint()检测两个集合是否不相交 不相交返回True,相交False

# 交集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 & lset2
ret2 = lset1.intersection(lset2)
print(ret1)
print(ret2)# 差集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 - lset2
ret2 = lset1.difference(lset2)
print(ret1)
print(ret2)# 并集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 | lset2
ret2 = lset1.union(lset2)
print(ret1)
print(ret2)# 对称差集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 ^ lset2
ret2 = lset1.symmetric_difference(lset2)
print(ret1)
print(ret2)# 子集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 < lset2
ret2 = lset1.issubset(lset2)
print(ret1)
print(ret2)# 父集
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret1 = lset1 > lset2
ret2 = lset1.issuperset(lset2)
print(ret1)
print(ret2)#检测两个集合是否不相交
lset1 = {'a', 'b', 'c', 'all fake'}
lset2 = {'good', 'very good', 'all fake'}
ret2 = lset1.isdisjoint(lset2)
print(ret1)
print(ret2)

2、集合相关的函数

add、update(迭代增加)、clear、pop(集合中随机删除)、remove()、discard()

(1)增:有两个方法

  • add:单个添加
  • update:迭代增加,多个添加 ;注:update中是字符串的时候,字符串会被拆分成单个字符

(2)删:有四个方法

  • clear:清空集合中的所有数据

  • pop:随机删除集合中的一个数据

  • remove:删除集合中的指定的值(不存在会报错)

  • discard:删除集合中的指定的值(不存在不会报错,不会删除,推荐使用)

    # add
    setvar = {'zxc'}
    setvar.add("asd")
    print(setvar)# update
    setvar = {'zxc'}
    setvar.update("asd", 'pdd', 'lq')
    lst = ['azx', 'qwe']
    setvar.update(lst)
    tup = ['azx', 'qwe']
    setvar.update(tup)
    strs = 'apd'
    setvar.update(strs)
    print(setvar)# clear
    setvar = {"asd", 'pdd', 'lq'}
    setvar.clear()
    print(setvar)# pop
    setvar = {"asd", 'pdd', 'lq'}
    setvar.pop()
    print(setvar)# discard
    setvar = {"asd", 'pdd', 'lq'}
    setvar.discard('pdd')
    setvar.discard('pdds')
    print(setvar)# remove
    setvar = {"asd", 'pdd', 'lq'}
    setvar.remove('pdd')
    # setvar.remove('pdds')
    print(setvar)
    

冰冻集合:frozenset 可强转容器类型数据变成冰冻集合
特征:冰冻集合一旦创建,不能再做任何的添加或者删除操作,只能做交叉并补,可以遍历

fz = frozenset()
print(fz, type(fz))lst = ["a", "b", "c"]
fz = frozenset(lst)
print(fz, type(fz))
for i in fz:print(i)fz1 = frozenset(["a","b","c"])
fz2 = frozenset(["a","b","c","d"])
res = fz1 & fz2
res = fz2 - fz1
print(res)

十、文件操作

1、文件的基本操作

打开文件open(‘文件名’, ‘模式’, ‘字符编码集’);关闭文件 fp.close()

(1)文件的写入操作:mode = ‘w’(write)模式;write()方法写入内容

(2)文件的读取操作:mode = ‘r’(read)模式;read()方法读取内容

(3)字节流的转换:

​ encode()编码,将字符串转化为二进制字节流

​ decode()解码,将二进制字节流转化为字符串

(4)字节流的存储:字节流模式下,无需指定编码集

​ 写入操作:mode = ‘wb’ ;读取操作:mode = ‘rb’

# 文件的写入操作
fp = open("ceshi.txt", mode='w', encoding="utf-8")
fp.write("把大象塞进去")
fp.close()# 文件的读取操作
fp = open("ceshi.txt", mode='r', encoding="utf-8")
ret = fp.read()
print(ret)
fp.close()# 字节流的转换
strvar = '我爱你'
res = strvar.encode('utf-8')  # 编码
print(res)
ret = b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')  # 解码
print(ret)# 字节流写入操作
fp = open("ceshi2.txt", mode="wb")
str_bytes = "Trouble is a friend".encode("utf-8")
fp.write(str_bytes)
fp.close()# 字节流读取操作
fp = open("ceshi2.txt",mode="rb")
res = fp.read()
fp.close()# 图片 音频 视频这样的文件都是二进制bytes,图片的读写操作如下
fp = open('GD5.jpg', mode='rb')
GD_bytes = fp.read()
fp.close()
print(GD_bytes)fp = open('GD6.jpg', mode='wb')
fp.write(GD_bytes)
fp.close()

列表、元组、字典、集合的基本使用和相关函数,基础的文件操作相关推荐

  1. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  2. python_列表——元组——字典——集合

    列表--元组--字典--集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  3. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  4. python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...

    Python序列(列表.元组.字典.集合) 一.列表(List)与列表推导式 (一)列表(list) 1.列表是Python内置 可变序列 (列表中元素可增加删除或修改): 2.列表元素放在一对中括号 ...

  5. python入门——列表+元组+字典+集合

    列表 列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 1.列表嵌套(相当于二维数组) a=["b",'c','d'] ...

  6. Python 列表元组字典集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  7. Python列表/元组/字典/集合详解

    本文是对Python中的列表.元组.字典.集合知识的梳理总结,将Python的重要知识点梳理成条,通过一个简单的员工管理系统(EMS)实战,可以深入的了解Python的基本知识.本文基本上涵盖了在日常 ...

  8. python 数据类型:整型 字符串 布尔值 列表 元组 字典 集合

    不可变类型:整型 字符串 整型 字符串 可变类型:列表 字典 一.列表常用命令 #增删改查 #查  切片 [] # print(a[1:])#取到最后 # print(a[1:-1])#取到倒数第二值 ...

  9. 4.Python基础语法(数字运算/字符串/列表/元组/字典/集合)

    4.1 数字运算 编程是将问题数据化的一个过程,数据离不开数字,Python的数字运算规则与我们学习的四则运算规则是一样的,即使不使用Python来编写复杂的程序,也可以将其当作一个强大的计算器.打开 ...

  10. 元组字典集合内置方法与拷贝

    ''' 元组字典集合内置方法与拷贝 ''' # 什么是元组tuple(了解):只可取 不可更改 的列表,元组一创建就被写死了 lt = [1, 2, 3] lt[0] = 2 # 1. 作用:元组一创 ...

最新文章

  1. java批量下载文件为zip包
  2. linux系统死亡之平台,又一个Linux发行版宣告死亡
  3. 直接设置Activity的背景颜色
  4. LintCode MySQL 1932/1933. 挂科最多的同学 I / II
  5. cstring判断包含字符串_作为java程序员要知道的大厂常见的算法面试题:字符串的包含...
  6. POJ-3422-Kaka's Matrix Travels(最小费用最大流)
  7. java平台沙箱安全组件,安全-如何创建Java沙箱?
  8. PyQt4开发环境搭建指导
  9. C# 遍历DLL导出函数
  10. 内存陷阱 驯服C++中的野指针
  11. 4.数据结构 --- 串
  12. [Oracle]分区索引
  13. 联发科被动“卡位”内地集成电路市场 剑指老对手展讯
  14. 用C 程序理解汉字的机内码表示
  15. 主流无线芯片厂商的自动信道选择算法小结
  16. java缺失_Java中找出缺失的数字
  17. 在mysql调用存储过程完成spilt切割
  18. 满地鸡毛的一年 || 转行Android之路
  19. 中关村刀片机服务器销售,刀片服务器
  20. 处理Elasticsearch集群yellow和red状态

热门文章

  1. 猜姓氏c语言题目,猜姓氏游戏及其数学原理
  2. matlab仿真没有synchr,Synchro交通仿真系统分析及应用
  3. 互联网大厂面试考点————JVM
  4. 技术可行性与操作可行性的资料搜集与分析
  5. 从word中无损批量导出图片
  6. Vmware Vsphere HA
  7. netcfg_route_netstat_setprop 等命令的使用
  8. 电脑qq聊天记录迁移--备份与恢复
  9. ug12无法连接服务器系统,NX许可证错误:无法连接至许可证服务器系统。SPLM_LICENSE_SERVER错误[-15]...
  10. 电力行业适合学习的开源软件