返回顶部
首页 > 资讯 > 后端开发 > Python >002_第一部分_[字典 / 列表解析
  • 566
分享到

002_第一部分_[字典 / 列表解析

第一部分字典列表 2023-01-31 08:01:34 566人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

一.字典: 定义字典:d = {}d = dict()d = {"a":1, "b":2} 1.获取元素: d['a'] d.get('a') >这两个的区别,用get在key不存在的时候不会抛出Error; d.get('a',

一.字典:

定义字典:
d = {}
d = dict()
d = {"a":1, "b":2}

1.获取元素:

d['a']
d.get('a')
>这两个的区别,用get在key不存在的时候不会抛出Error;

d.get('a', 'infORMation')   //设置当key不存在的时候返回的内容;

2.增加和修改元素:

d['a'] = 3   //修改和增加元素的方法都是这个

3.删除元素:

d.pop('c')  //删除的同时返回删除的内容
>如果删除不存在的key会报KeyError,这个时候就需要给定返回值

d.pop('c', 'information')
help(d.pop)

>这样返回的就是information,不会报KeyError错误;

d.popitem()    //从字典中随机删除一个;

利用关键字del 删除,del 可以删除一个变量 同时也可以用来删除字典:
del d['a']

4.遍历:

>[生成一个生成器,可以进行迭代操作][字典是无序的,所以返回的迭代对象也是无序的]

d.items()  生成器中是一个元组的列表
d.values()  
d.keys()    
    for i in d.keys()

    d = {}
    d['root'] = 'root'
    d['root']['left'] = 'left'
    d['root']['right'] = 'right'
    d  //生成一个二叉树

二.列表解析:

  • 列表解析是python重要的语法糖

  • 列表解析的速度比for in 迭代 快

基本语法:

    ret = [expression for item in iterator]
    ret = [expression for item in iterator if iterator >=1 and iterator != 7 ] 
    ret = [expression for x in X for y in Y]   //返回的是一个笛卡尔积,相当于两个嵌套的for循环

    等价于
    ret = []
    for item in iterator:
        ret.append(expression)

例子1:
    lst = list(range(10))
    [x + 1 for x in lst]

    import timeit
    def fn1():

    timeit.timeit(fn1())   //查看函数执行需要的时间

例子2:
    带条件的列表解析:
    lst = list(range(10))
    [x + 1 for x in lst if x % 2 == 0]   //输出奇数

    [x + 1 for x in lst if x % 2 == 0 and x > 2 ]   //两个条件

例子3:
    l1 = [1, 3, 5, 7, 9]
    l2 = [0, 2, 4, 6, 8]
    [(x,y) for x in l1 for y in l2]
    [(1, 0-8)        //每个l1的值 x 都会循环一遍l2
      (3,0-8 )
     (5, 0-8)
    ] 
    
    

三.集合解析:

**集合解析中得到的元素只能有一个**
ret = {expression for item in iterator}

例子1:
     s = [1, 3, 5, 5] 
    {x + 1 for x in s}
    {2, 4, 6}

四.字典解析:

ret = {exprK:exprV for item in iterator}

例子1:
    d = {'a':1, 'b':2}
    {k, v for k, v in d.items()}

例子2:
    {k:v for k, v in [('a',1), ('b', 2)]}
    {'a':1, 'b':2}

五.字符串与文本操作:

Python2 和python3最大的差别就是在于字符串
python2中字符串是byte的有序序列
python3中字符串是unicode的有序序列
字符串是不可变的
字符串支持下标和切片

1.字符串的切片操作:

t = 'asdfzxv'     //前面是闭区间,从0开始,后面是开区间
t[1]
t[-1]
t[0:]
t[:]
t[1:-1]

2.字符串格式化:

1.使用 % 来格式化

'i love %s' % ('python',)
'i love %(name)s' % {'name':'python'}
'i love %(name)s %(name)s' % {'name':'python'}   //当有多个重复使用的值,可以使用字典的方式
'i love %s ,%s' % ('python', 'python')  //进行多个不同数值的格式化

FLAG
flag |说明 |实例                                        输出:
n    n表示一个数字       '%3s' % ('a', )                     '  a'    //在a前面会有两个空格
0    使用0填充,仅适用与数字  '%03D' % (1, )          '001'
.     是有那个空格填充,默认行为  '%.3d' % (1, )      '  1'  //在1前面以空格填充
  • 右边使用空格填充 '%-3d' % (1, ) '1 ' //在1后面以两个空格填充

  • 填充之前加'+' 仅对于正数 '%+03d' % (1, ) '+01' //在1前面填充0,增加正数标记符

    CONVERSION
    符号 说明

  1. 整数

  2. 整数

  3. 八进制整数

  4. 小写十六进制整数
    X 大写十六进制整数

  5. 浮点数
    F 浮点数

  6. 小写科学计数法
    E 大写科学计数法

  7. 整数, 已废弃

  8. 同f,如果指数小于-4,同e
    G 同f,如果指数小于-4,同E

  9. 字符,接收unicode编码或单字符字符串

  10. 字符串,使用ascii函数转换

  11. 字符串,使用repr函数转换

  12. 字符串,使用str函数转换

    
    例子1:
    '%d' % 3.4
    > 3

2.使用format方法格式化:

https://docs.python.org/3.4/library/stdtypes.html?highlight=format#str.format
template format(args, *kwargs) (1) (2) (3) (4)

1.template 使用 {} 标示变量
2.{}或{\d+} 使用 *args 按顺序填充
3.{key} 使用 **kwargs 按 key 填充
4.Format String Syntax

例子1:
'{0}, {name}'.format('hello',name='world')

3.字符串常用操作 [重点] :

字符串连接join
字符串分割split, rsplit, splitlines, partition, rpartition
字符串修改-大小写 capitalize, title, lower, upper, swapcase
字符串修改-填充清除 center, ljust, rjust, zfill, strip, rstrip,lstrip
字符串判断 startswith, endswith,is*
字符串查找替换 count, find, rfind, index, rindex, replace

1.join[字符串连接]:

    lst = ['i', 'like', 'python']
    ' '.join(lst)
    '_'.join(lst)
    ret = ''
    for i in lst:
          ret += i
          ret += ' '
    ret

2.split - rsplit - splitlines[分割]:

    内置函数split是不支持正则表达式的,需要先import re模块;
    help(str.split)
    S.split(sep=None, maxsplit=-1) 
    
    例子1:
    s='i like python'
    s.split()
    ['i', 'like', 'python']

    例子2:
    s.split('o')      //指定的分割符不会被保留;
    >['i like pyth', 'n'] 
    
    例子3:
    s.split(' ', 1)  //后面的数表示分割几次,默认是最大分割, -1表示从后开始分割
    ssplit(' ', -1)
    这里可以使用UNPACKING:
    s = 'root:x:0:0:root:/root:/bin/bash'
    username,_ = s.plit(':', 1)
    username
    > 'root'

    例子4:
    s = 'root\n:x:0\n:0\n:root:/root:/bin/bash'   //按照换行符分割
    s = '''                  //像这样需要多行的且需要按行分割的就需要用到splitlines
    11111111          //这里总共是4行,按照换行符算,第一行也有换行符
    22222222
    33333333
    '''
    s.splitlines()
    > ['root', ':x:0', ':0', ':root:/root:/bin/bash']
    s.splitlines(True)   //填写True将会保留换行符,默认False

3.partition - rpartition[分割]:

    s = 'root\n:x:0\n:0\n:root:/root:/bin/bash'
    s.partition(':')         //partition会按照顺序 将分隔符单独分割成一个元素,
    >('root', ':', 'x:0:0:root:/root:/bin/bash')

4.capitalize - title - lower - upper - swapcase[修改 大小写]:

capilize :   第一个字母变大写,其他字母变小写
       title:   每个单词的首字母大写,其他字母变小写
    lower:   将所有字母变小写
    upper:   将所有字母变大写

swapcase: 将大小写对换;

5.center - ljust - rjust - zfill - strip - rstrip - lstrip [修改 字母]:

center: 前后填充

            s.center(20)   //默认用空格进行前后填充,填充满20个字符
            s.center(20,'#') //以'#'进行前后填充.

 ljust:     填充向左边
            s.ljust(20,'#')  #号将会填充在原来字符串的右边,因为是向左填充

 rjust:     填充向右边
            与ljust方向相反;

   zfill:    zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0
            str.zfill(width)

 strip:    删除头尾匹配符,默认删除换行符和空格,tab键
rstrip:    删除结尾匹配符
lstrip:    删除开头匹配符

            f = open('/etc/passwd', 'r')
            f.readline()   //返回的一行带有换行符
            f.readline().strip()  //这样将不会带上换行符

6.startswith - endswith - is *[判断]:

            for line in f.readlines():
                    line = line.strip()
                    if line.startwith('root:'):
                        _, shell = line.rsplit(":",1)
                        print(shell)

7.count, find, rfind, index, rindex, replace[查找 和 替换]:

        f = 'sdfsdfsdfsadfsdf'
        f.count('r')  //统计有多少个r,如果是多个字符就是多个字符进行匹配统计
        
        f.find('fs')      //从左开始查找第一次匹配到的位置; 找不到会返回 -1
        f.find('fs', 2, 4)  //设置 [开始] [结束] 位置
        f.index('fs')     //从左开始查找第一次匹配到的位置;找不到会返回ValueError

        f.replace('fs','pp')     //替换   将fs替换成pp
        f.replace('fs','pp', 2)  //从左向右进行替换,替换两个;

六.STR与BYTES的区别:

Python3中严格区分了文本和二进制数据
Python2并没有严格区分
文本数据使用str类型,底层实现是unicode
二进制数据使用bytes类型,底层是byte
str使用encode方法转化为bytes
bytes方法使用decode方法转化成str
由于清晰的区分文本和二进制,Python3解决了大多数python2的编码问题

python3 中JSON的应用:

   import json
   json.loads('{"name":"comyn"}')

Socket中的发送信息;需要将str转换成bytes才能发送;
s.send('{"name":"comyn"}'.encode())

--结束END--

本文标题: 002_第一部分_[字典 / 列表解析

本文链接: https://lsjlt.com/news/193316.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 002_第一部分_[字典 / 列表解析
    一.字典: 定义字典:d = {}d = dict()d = {"a":1, "b":2} 1.获取元素: d['a'] d.get('a') >这两个的区别,用get在key不存在的时候不会抛出Error; d.get('a',...
    99+
    2023-01-31
    第一部分 字典 列表
  • Python中字典和列表性能的对比分析
    本篇文章为大家展示了Python中字典和列表性能的对比分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python列表和字典前面我们了解了 “大O表示法” 以及对不同的算法的评估,下面来讨论下 P...
    99+
    2023-06-15
  • Python列表、字典、元组和集合实例分析
    这篇文章主要介绍了Python列表、字典、元组和集合实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python列表、字典、元组和集合实例分析文章都会有所收获,下面我们一起来看看吧。列表1.列表什么是列表...
    99+
    2023-06-30
  • Python字符串,列表,字典和集合实例处理分析
    今天小编给大家分享一下Python字符串,列表,字典和集合实例处理分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.如何...
    99+
    2023-07-02
  • python列表,元祖,字典详解
    列表:    基础数据类型,可含有大量数据,可存储各种数据类型    1,索引切片    与字符串一样    2,增删改查,以及其他操作        增        append 追加          insert  列表.inser...
    99+
    2023-01-31
    元祖 字典 详解
  • Java分析讲解序列化与字典功能的序列化
    目录两种解决方案字典注解定义字典序列化与返序列化器的实现字典序列化与反序列工具类字典转换服务类字典缓存服务两种解决方案 前端查询字典数据然后前端转码后端查询字典值,然后再转码返回给前...
    99+
    2024-04-02
  • python 字典和列表嵌套用法详解
    目录列表(List)常用方式字典(dictionary)常用方式组合使用列表嵌套列表列表嵌套字典字典嵌套字典字典嵌套列表嵌套什么时候用参考文献python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基...
    99+
    2022-06-02
    python 字典和列表嵌套 python 列表嵌套
  • 浅析Python中元祖、列表和字典的区别
    1、列表(list)   list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。   列表中的项目应该包括在方括号中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就...
    99+
    2022-06-04
    元祖 字典 区别
  • python两个列表合并为字典,一个作为
    两个列表合并为一个字典函数list_dic(list1,list2)可以直接复制拿走 传入的参数为两个列表,list1准备作为key,list2准备作为value,key和value位置一一对应。   def list_dic(list...
    99+
    2023-01-31
    并为 字典 两个
  • Java8 Stream分组groupBy后,取单一字段值、取列表第一个值方式
    java8 Stream中groupBy的拓展用法。 取单一字段值、取列表第一个值方式 取某字段成为列表 Map ruleMap1 = ruleList.stream(). ...
    99+
    2023-09-04
    java
  • Java序列化与字典功能的序列化实例分析
    这篇文章主要介绍了Java序列化与字典功能的序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java序列化与字典功能的序列化实例分析文章都会有所收获,下面我们一起来看看吧。两种解决方案前端查询字典数...
    99+
    2023-07-02
  • PYTHON如何判断一个字典或者列表为空
    http://bbs.chinaunix.net/thread-1283789-1-1.html ...
    99+
    2023-01-31
    字典 为空 如何判断
  • Python 列表和字典常踩坑即解决方案
    目录一、关于列表1.问题描述2.解决方案方案一方案二二、关于字典1.问题描述2.解决方案结论前言: 在Python中,如果我们想要在遍历一组数据的过程中,对这组数据进行修改,通常会出...
    99+
    2024-04-02
  • Python列表和字典踩坑问题怎么解决
    这篇“Python列表和字典踩坑问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python列表和字典踩坑问题怎么...
    99+
    2023-06-30
  • 2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】
    最近回顾了Java B组的试题,深有感触:脑子长时间不用会锈住,很可怕。 兄弟们,都给我从被窝里爬起来,赶紧开始卷!!! 2022年第十三届蓝桥杯Java B组(第一部分 A~F题) 目录 一、填空题 试题 A: 星期计算 思路与题...
    99+
    2023-09-29
    java 蓝桥杯 算法
  • python列表解析式的示例分析
    这篇文章给大家分享的是有关python列表解析式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。列表解析式比如我们有一系列水果的名字,存放在fruit列表里,如果我们希望把列表的内容都改成大写,我们可以有...
    99+
    2023-06-27
  • 第一届创享杯 服务器部分题解
    第一届创享杯 服务器部分题解 检材分析 多个文件组成,可能为集群或者RAID阵列 只有server05 这个大的能解析,其他全部不能解析,考虑其他几个是raid阵列,raid阵列的特征是无法单独解...
    99+
    2023-09-25
    服务器 apache php 网络安全 linux
  • 将字符串分解成一个表(多行、多列)表值函数[ StrSplit_Tab]
    用一个字符串来描述一个表的内容,需要时用这个表值函数将其还原成一个表。由于无法预知表的列数量和列名,需要使用时进行 【行列转换】。此函数,也可以像[StrSplit]函数一样,将字符串分解成单列,只要参数@...
    99+
    2024-04-02
  • Python字典高级用法深入分析讲解
    目录一、 collections 中 defaultdict 的使用1.字典的键映射多个值2.统计字典中某个值出现的次数二、collections 创建有序字典1.改变 key-va...
    99+
    2024-04-02
  • 根据字节部分解析文件
    php小编百草为您介绍一种根据字节部分解析文件的方法。这种方法可以让我们在处理大型文件时,不需要一次性加载整个文件到内存中,而是根据需要逐步解析文件内容。这种方式不仅可以减少内存占用,...
    99+
    2024-02-13
    内存占用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作