Python开发(二):列表、字典、元组与文件处理

  

一:列表
二:元组
三:字典
四:文件处理

一:列表

  1.   为什么需要列表

    可以通过列表可以对数据实现最方便的存储、修改等操作。字符串是不能修改的,所以无法对数据进行修改。而且可以通过列表进行方便的取值

    #  列表的操作

  2. 创建列表
    >>> name = ["XiaoMing","XiaoHua","XiaoQiang"]
    >>> name
    ['XiaoMing', 'XiaoHua', 'XiaoQiang']
  3. 取值
    >>> name[1]
    'XiaoHua'
    >>> name[2] # 写入要取的值的位置,从0开始计算
    'XiaoQiang'

      

  4. 更改值
    >>> name
    ['XiaoMing', 'XiaoLan', 'XiaoQiang'] >>> name.append("XiaoZi")
    >>> name
    ['XiaoMing', 'XiaoLan', 'XiaoQiang', 'XiaoZi'] # //* 变量.append(“添加的值”)

      

  5. 插入值 
    >>> name
    ['XiaoMing', 'XiaoLan', 'XiaoQiang', 'XiaoZi'] >>> name.insert(2,"XiaoWei")
    >>> name
    ['XiaoMing', 'XiaoLan', 'XiaoWei', 'XiaoQiang', 'XiaoZi'] #  //* 插入时:要插在内个位置就写内个数,如上题,将“XIaoWei” 插入低三位,就写2(因为是从0开始计算的),插入以一个就写0

      

  6. 删除值两种方法
    #  1):万能删除法del :(del可以删除内存中的很多变量的值,但是只能删除内存中的值)
    >>> name
    ['XiaoMing', 'XiaoLan', 'XiaoWei', 'XiaoQiang', 'XiaoZi'] >>> del name[1] # 删除写入要删除的值的索引值
    >>> name
    ['XiaoMing', 'XiaoWei', 'XiaoQiang', 'XiaoZi']
    >>> # 2):利用列表的方法删除
    >>> name
    ['XiaoMing', 'XiaoWei', 'XiaoQiang', 'XiaoZi'] >>> name.remove[2]
    >>> name.remove("XiaoWei") # 删除写入要删除的值 >>> name
    ['XiaoMing', 'XiaoQiang', 'XiaoZi']

      

  7. 查找指定值的索引值
    >>> name
    ['XiaoMing', 'XiaoQiang', 'XiaoZi', 'Jack', 'RouSi', 'QingJiao'] >>> name.index("QingJiao")
    5

      

  8. 统计列表中的相同值的个数
    >>> name
    ['HuangGua', 'QingJiao', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi', 'HuangGua'] >>> name.count("HuangGua")
    2 # //* 有重复值时,如果要对重复的值进行操作时(删除,查索引等),是操作的从做向有的第一个

      

  9. 为列表进行排序:
    #   (1):按照 ASCII 正序排序
    >>> name
    ['XiaoMing', 'XiaoQiang', 'XiaoZi', 'HuangGua', 'RouSi', 'QingJiao']
    >>> name.sort()
    >>> name
    ['HuangGua', 'HuangGua', 'QingJiao', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi'] # (2):按照 ASCII 倒序排序
    >>> name
    ['HuangGua', 'HuangGua', 'QingJiao', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >>> name.reverse()
    >>> name
    ['XiaoZi', 'XiaoQiang', 'XiaoMing', 'RouSi', 'QingJiao', 'HuangGua', 'HuangGua'] # //* 注:如果在列表中有数字的话,就无法对列表进型排序必须将数字换成字符串(也就是添加数字时,如果没有加引号的数字会导致无法排列,必须在添加时,为数字加上引号。)如下: >>> name
    ['XiaoZi', 'XiaoQiang', 'XiaoMing', 'RouSi']
    >>> name.insert(2,5)
    >>> name
    ['XiaoZi', 'XiaoQiang', 5, 'XiaoMing', 'RouSi']
    >>> name.sort()
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: unorderable types: int() < str()
    >>> name[2] = "5"
    >>> name
    ['XiaoZi', 'XiaoQiang', '5', 'XiaoMing', 'RouSi']
    >>> name.sort()
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']

      

  10. 取多个值
    #  1) :取 5后面的两个值
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >> name[0:3] # 0 为要取的值的位置,3为要取到几个索引值那
    ['5', 'RouSi', 'XiaoMing']
    >>> # //* 因为截取的值是,顾头不顾尾,所以要取后面两个值要,从所在值的后面在向后延以为,也就是 X + (Y+1) =Z # //* X 是你要求值的索引值 , Y 是你要求几位 , Z是你最后要求到的值的索引值 # 2) :求RouSi到最后一个的值
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >>> name[2:]
    ['XiaoMing', 'XiaoQiang', 'XiaoZi']
    # //* 如果是取到最后的话冒号后面只能不写,否则的话就会因为鼓手不顾尾的原因悟取不到最后一个 # 3) :取RouSi到倒数第二个
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >>> name[2:-1]
    ['XiaoMing', 'XiaoQiang']
    # //* -1 为倒数第一个, -2 为倒数第二个 以此类推

      

  11. 各一个取一个
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >>> name[0::2] # 取奇数为
    ['5', 'XiaoMing', 'XiaoZi']
    >>> name[1::2] # 取偶数为
    ['RouSi', 'XiaoQiang']

      

  12. 各一个取两个
    >>> name
    ['5', 'RouSi', 'XiaoMing', 'XiaoQiang', 'XiaoZi']
    >>> name[0::3]
    ['5', 'XiaoQiang']
    >>> # //* 综上所述: 每各几个取值就在第二个冒号后面写上 ,(N + 1) 个

二:元组

  元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    语法:names = ("alex","jack","eric")

三:字典

1:字典的作用,为什么要有字典:由于列表查询值时,需要知道索引值,或者要知道子列表中的所有值,查询时非常不方便,所以取值与查询非常不方便,所以出现了字典,来弥补列表的不足

2:字典的语法,以及特点:

Variable = { key,value }  # 字典

Variable = [ 值1,值2,值3 ]  # 列表

Variable = (值1,值2,值3)  # 元组

1:在字典的key 中,key值必须时唯一的,否则在查询值时,会出现错误,

2:字典中的key值,是无序的,key对应的值是不变的,除非人为的对其进行修改

3:字典的增删改查:

names = {

    "stu1101":{"name":"Alex","age":"22","hobbie":"girl"},

    "stu1102":"Jack",

    "stu1103":"rain"

}

1): 查

print(names["stu1101"]["hobbie"])

print(names.get("stu1104","abc123"))  #查询stu1104值是否存在,存在就返回他查找的value值,不存在就返回abc123是自己定义的,不定义就返回None。

(1):查询字典中的所有key值

print(names.keys())

(2):查询字典中的所有value值

print(names. values())

2): 增加

names["stu1104"] = ["zsy",18,"ABC123"]

3): 改

names["stu1104"]='new_value_1'  #如果要替换值,替换后他会将key对应的 value值全部替换掉,无法修改key对应的值中的其中一个值

4):删除

(1):print(names.pop("stu1101","abc123"))

# 删除stu1101的值,如果值存在就返回他的删除的value值,不存在就返回abc123,abc123是自己定义的,如果不定义,要删除的值还不存在,就会报错,所以必须加上回显的值

(2):# del names["stu1103"]

4:字典的其他操作

1):fromkeys(变量,value值)   # 将列表改为字典

//* 注释:

1:dict是数据类型,只能使用dict才能调用fromkeys()

2:上图显示 jack 与 eric 对应的value的值是一个内存id ,所以,可以判断,他们指向的,value 值 是一个,所以如果对其中一个进行修改其他的也会跟着改,如图8-4-1。所以,如果不想出现此情况可以对 value值进行修改,如图8-4-2:

图8-4-1

图8-4-2

 

2):items():将字典打印成列表

用途一般是用来循环打印字典信息的:但是效率不高

3):setdefault(N,M):查找N,如果N存在,回示N的value , 如图:图8-4-3,如果N不存在,则添加N,M。(N为key,M为value) 如图:图8-4-4

图8-4-3

图8-4-4

4):update():合并两个列表,如果两个列表有相同的值,则使用新加入的值

     

5):copy():复制一个字典:占用一个单独的内存空间:

(1):浅 copy

//*注释:1:copy是单独复制出来了一块内存地址,所以两个最外层的字典内存ID不同

2:第二层的字典ID相同的意义是因为,stu1101对应的value不是直接在整个字典中的,他是 stu1101指向了一个内存的ID,两个字典的二层字典,同时指向了一个ID,所以才出现上面的情况

例1:可以使用copy的这个共性,实现两个账户同时对一个库的使用,就如同,银行卡的子母银行卡

(2):深copy,完全 copy 连子字典都重新定义

            例二:

      

四:文件操作

1):打开文件

        print(open("lyric",encoding="utf-8",mode="r")
     # 没有加载到内存,只是获取的文件位置,并且可以操作他了

//* 注释:

1:r 只读模式  :打开后,只能读无法对其进行操作

2:w写入模式,只能写入:写入文件时,没有原文件会创建。有则会覆盖原文件内容

3:a 追加模式  :追加文件时,没有原文件会创建。有则追加

2):写入:

      

结果:

  

3):追加

      

    结果:

      

4):例子修改文件内容:

       

//* 注释:

1:因为文件是按照顺序重头至尾进行排序的,所以需要要对原文件进行修改就只能进行追加:

2:要想替换文件内容就只能入上例写入一个新文件,然后在对文件名进行修改

Python开发(二):列表、字典、元组与文件处理的更多相关文章

  1. python 数据类型二 (列表和元组)

    一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...

  2. python之字符串,列表,字典,元组,集合内置方法总结

    目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...

  3. python中遍历列表字典元组

    遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone lt = [ {'name':'小王', 'age':18, 'info':[('phone', '123'), ('diz ...

  4. Python 学习笔记(1)Python容器:列表、元组、字典与集合

    Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...

  5. python 变量、列表、元组、字典

    python 变量.列表.元组.字典 1.python 变量赋值 2.ptython  列表 3.python 元组 4.python  字典 1.  Python变量赋值     1.1变量的命名规 ...

  6. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  7. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  8. 第三章 Python容器:列表、元组、字典与集合

      数据结构的分类依据?基本的"数组"在python中是列表, 数据结构的作用?容器,盛放数据,是由原子组成的分子.可以将一群数据进行整合.拆分.重排. 3.2 列表 列表是啥?顺 ...

  9. Python数据基础--列表、元组、字典、函数

    一.数据结构 列表(List)和元组 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内 ...

  10. Python基本数据类型--列表、元组、字典、集合

    一.Python基本数据类型--列表(List) 1.定义:[ ]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素. 2.列表的创建: # 方式一 list1 = ['name','ag ...

随机推荐

  1. gMIS吉密斯十年执念:Lower Costs较低成本Better Productivity较高效率

    Hello 2020! 元旦快乐!今起揭开21世纪20年代的篇章. 1. gMIS吉密斯十周年 2010-2020,十年转眼已成历史,gMIS吉密斯——通用管理信息系统(general Managem ...

  2. linux 上安装 tomcat

    准备条件:安装java 一.tomcat 的安装 #新建文件夹 mkdir -p /data/tomcat #下载 tomcat8 服务器 wget http://mirrors.tuna.tsing ...

  3. MonkeyScript常用命令及Uiautomatorview问题解决

    一.MonkeyScript执行脚本的命令 adb shell monkey -f <scriptfile><event-count> 1.Dispatch Trackball ...

  4. Linux基础篇五:文件操作篇(三剑客)

    cut截取字段: -d  指定分割符 -f   指定第几列 例题1: echo "i am dusonglin ,my qq is  380343680 " >dusongl ...

  5. Tomcat下访问HTML页面乱码的解决方法

    问题:在 Tomcat 服务器中访问 HTML 静态页面出现中文乱码,html 页面即使 charset 设置成 UTF-8 也会是乱码,打开浏览器的开发者工具发现 response 的请求头中的 C ...

  6. D. Fish eating fruit

    题:https://nanti.jisuanke.com/t/41403 题意:求任意俩点之间距离之和模3后的三个结果的总数(原距离之和) 第一种做法: 树形dp #include<bits/s ...

  7. VS工程的相对路径写法

    最近搭建一个VS工程的框架,为了让所有人都能直接使用,要使用相对路径,下面的几种常见路径的写法: 1.两个点“..\”表示在工程文件(*.vcxproj)的上一级目录. 2.一个点“.\”则表示和工程 ...

  8. Two Sum(Medium)

    1.遍历一次nums,利用map记录已经遍历过的nums[i],并记录其index :i+1 2.每次求出b=target-nums[i],检测b是否在map中,如果在,则已经得到答案,否则,把num ...

  9. LeetCode Day 13

    LeetCode0026 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空 ...

  10. HTML面试题&知识点汇总

    目录 问题&答案 参考资料 结束语 问题&答案 DOCTYPE作用?标准模式与兼容模式各有什么区别? 声明位于HTML文档中的第一行,处于 html 标签之前.告知浏览器的解析器用什么 ...