精华内容
下载资源
问答
  • 前言 本文的文字及图片来源于网络,仅供学习、交流使用,...列表没有长度限制,元素类型也可以是不同的,不需要预定义长度。 列表类型用中括号([ ])表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。l

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

    Python免费学习资料、代码以及交流解答点击即可加入


    1.列表类型

    列表是包含0个或多个元素的有序序列,属于序列类型。列表可以进行元素增加、删除、替换、查找等操作。列表没有长度限制,元素类型也可以是不同的,不需要预定义长度。

    列表类型用中括号([ ])表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。list()函数可生成空列表。

    
    >>> li = [1,2,3,[4,5,6],7]#列表的元素可以是列表
    >>> li
    [1, 2, 3, [4, 5, 6], 7]
    >>> list("一个字符串")#将字符串转换为列表
    ['一', '个', '字', '符', '串']
    

    用于列表属于序列类型,所以其适用于所有序列类型的函数,使用方法如上一小节所述。

    列表类型通过索引访问特定的元素,索引序号不能超过列表的元素范围,否则会IndexError报错。可以使用遍历循环对列表类型的元素进行遍历操作。

    列表中还有一个重要的操作,即切片,用于获得列表的一个片段,即获得零个或多个元素。切片后的结果也是列表类型,切片有两种使用方式:

       <列表或列表变量>[N:M]
    

       <列表或列表变量>[N:M:K]
    

    在Python语言中,[ ]表示区间时需要冒号(:),表示枚举使用逗号(,)。

    切片获取列表类型从N到M(不包含M)的元素组成新的列表,其中,N和M为列表类型的索引序号,可以混合使用正向递增序号和反向递减序号,一般要求N所指的元素位置小于M所指的即可。当N大于等于M时,返回空列表。当K存在时,切片获取列表类型从N到M(不包括M)以K为步长所对应元素组成的列表。

    2.列表类型的操作

    列表类型存在一些操作方法,使用语法如下:

       <列表变量>.<方法名称>(<方法参数>)
    

    下表给出一些常用的操作方法,其中使用ls作为列表变量的通用表示:

     

    
    >>> ls = [1,2,3,[4,5,6],7]
    >>> ls.append(8) #末尾增加元素8
    >>> ls
    [1, 2, 3, [4, 5, 6], 7, 8]
    >>> ls.insert(2,2.5)#位置2插入元素2.5,其余元素索引后延
    >>> ls
    [1, 2, 2.5, 3, [4, 5, 6], 7, 8]
    >>> ls.pop(2)#弹出2号元素
    2.5
    >>> ls
    [1, 2, 3, [4, 5, 6], 7, 8]#弹出后该元素会被删除
    >>> ls.remove(8)#删除索引号较小的元素8
    >>> ls
    [1, 2, 3, [4, 5, 6], 7]
    >>> ls.reverse()#元素索引反转
    >>> ls
    [7, [4, 5, 6], 3, 2, 1]
    >>> li = ls.copy()#拷贝复制
    >>> li
    [7, [4, 5, 6], 3, 2, 1]
    >>> li.clear()#清空
    >>> li
    []
    

    需要注意,对于基本的数据类型,如整数或字符串,可以通过等号实现元素赋值。但对于列表类型,使用等号无法实现真正的赋值。例如li = ls并不是拷贝ls中的元素给变量li,而是新关联的一个引用,即ls和li所指向的是同一套内容。

    使用索引号配合等号(=)可以直接修改特定的元素,使用切片配合索引号可以直接修改列表片段,修改内容可以不等长,如:

    
    >>> ls = [1,2,3,4,5]
    >>> ls
    [1, 2, 3, 4, 5]
    >>> ls[2] = 0
    >>> ls
    [1, 2, 0, 4, 5]
    >>> ls[1:4]=[6,7]
    >>> ls
    [1, 6, 7, 5]
    

    3.字典类型

    “键值对”是组织数据的一种重要方式,广泛应用在当代大型信息系统中,如Web系统。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应的值信息,这个过程叫映射。Python语言中通过字典类型实现映射。

    Python语言中的字典字典使用大括号({ })建立,每一个元素是一个键值对,使用方式如下:

       {<键1>:<值1>,<键2>:<值2>,……<键n>:<值n>}
    

    其中,键和值通过冒号(:)配对,不同键值对之间通过逗号(,)隔开。从Python设计角度考虑,由于大括号{ }可以表示集合,所以字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。可以简单把字典看成元素是键值对的集合。注意,尽管都使用大括号,但集合与字典是不同的类型。

    注意,字典类型和集合类型形式上都采用大括号表示,但如果直接使用大括号,则生成字典类型,而不是集合类型。

    
    >>> d = {"202001":"小米","202002":"红米","202003":"华为","202004":"OV"}
    >>> d["202002"]#键索引值
    '红米'
    >>> d["202002"] = "redmi"#键修改值
    >>> d["202002"]
    'redmi'
    

    键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。

    4.字典的操作方法

    字典类型存在一些操作方法,使用语法形式如下:

       <字典变量>.<方法名称>(<方法参数>)
    

    下表给出了字典类型的一些常用操作方法,使用d代表字典变量。

     

    
    >>> d = {"202001":"小米","202002":"华为","202003":"OV"}
    >>> d.keys()
    dict_keys(['202003', '202001', '202002'])
    >>> d.values()
    dict_values(['OV', '小米', '华为'])
    >>> d.items()
    dict_items([('202003', 'OV'), ('202001', '小米'), ('202002', '华为')])
    >>> d.get("202002")
    '华为'
    >>> d.get("202004")
    >>> d.pop("202002")
    '华为'
    >>> d
    {'202003': 'OV', '202001': '小米'}
    >>> d["202002"] = "华为"
    >>> d
    {'202003': 'OV', '202001': '小米', '202002': '华为'}
    >>> d.popitem()
    ('202003', 'OV')
    >>> d
    {'202001': '小米', '202002': '华为'}
    >>> d.clear()
    >>> d
    {}
    

    字典类型也支持保留字in,用来判断一个键是否在字典中,如果在,就返回True,否则返回False。

    字典类型支持遍历循环。注意,由于键值对中的键相当于索引,所以,for循环返回的变量名是字典的索引。如果需要得到键对应的值,可以使用get()方法。

    展开全文
  • 本题显然要使用hash表,在python中即为字典; 思路1 无序哈希表 字典创建步骤: 首先,创建字典dic; 之后,遍历字符串,对每一个字符c: 如果该字符在dic中,则将该字符对应的value设为false; false表示出.

    题目

    在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

    示例:

    s = "abaccdeff"
    返回 "b"

    s = "" 
    返回 " "

    限制:

    0 <= s 的长度 <= 50000

    思路

    本题显然要使用hash表,在python中即为字典;

    思路1 无序哈希表

    字典创建步骤:

    首先,创建字典dic;

    之后,遍历字符串,对每一个字符c:

    • 如果该字符在dic中,则将该字符对应的value设为false; false表示出现了不止一次。
    • 否则(即不在dic中),则在字典中加入键值对{c, true}.

    接下来是 第一个字符搜索步骤

    遍历字符串,直到第一个在字典中键值为true的字符为止,返回该字符。

    思路2 有序哈希表

    将上述字典创建步骤中的字典改为有序字典;

    这样,在搜索时只需对字典dic进行遍历,返回第一个值为ture的key即可。

    显然,当字符串很长、有很多重复字符时,有序哈希表很有用。

     

    代码

    无序哈希表的代码如下:

    class Solution:
        def firstUniqChar(self, s: str) -> str:
            dic = {}
            for char in s:
                if char in dic.keys():
                    dic[char] = False   # 第二次出现
                else:
                    dic[char] = True    # 第一次出现
            for char in s:
                if dic[char]:
                    return char
            return " "

    有序哈希表的代码如下:

    class Solution:
        def firstUniqChar(self, s: str) -> str:
            dic = collections.OrderedDict()
            for char in s:
                if char in dic.keys():
                    dic[char] = False   # 第二次出现
                else:
                    dic[char] = True    # 第一次出现
            for key in dic:
                if dic[key]:
                    return key
            return " "

    值得注意的是,自Python3.6开始,改写了 dict 的内部算法,Python3.6 版本以后的 dict 是有序的,所以也就无须再关注 dict 顺序性的问题。即python3.6之后的代码完全可以改为:

    class Solution:
        def firstUniqChar(self, s: str) -> str:
            dic = {}
            for char in s:
                if char in dic.keys():
                    dic[char] = False   # 第二次出现
                else:
                    dic[char] = True    # 第一次出现
            for key in dic:
                if dic[key]:
                    return key
            return " "

     

    复杂度分析

    时间复杂度: 因为规定了s中只有小写字母,所以dic.keys()的大小为有限的不大于26的常数,故时间复杂度为O(N);

    空间复杂度: O(N)

    总结

    python中的哈希表实现简单

     

     

    展开全文
  • WIFI字典: 参考博客:Python破解Wifi密码思路 密码字典TXT文件生成,本文提供的比较简单,实用破解可以根据一般密码设置,去生成比较大比较全的密码字典。...Wifi的密码长度有何限制 Wifi常见的密码有wep,aes和...

    WIFI字典:

    参考博客:Python破解Wifi密码思路

    • 密码字典TXT文件生成,本文提供的比较简单,实用破解可以根据一般密码设置,去生成比较大比较全的密码字典。
    • 目前无线网络加密形式常见的有两种,WEP和WPA/WPA2,WEP破解方法非常简单,但是现在这种加密方式由于不安全基本上见不到了。这里就没有必要讨论WEP破解方法了。
    • Wifi的密码长度有何限制
      Wifi常见的密码有wep,aes和tkip,不同类型的密码长度不同。
      Wep密码在输入时可以按ascii码和hex两种:
      以ascii输入时长度为5,13。
      以hex输入时长度为10,26(因为两个hex是一个字节)。
      Aes和tkip的长度为8~63。

    Python代码

    • 以下提供简单8位纯数字的字典生成方案代码 (生成出来的dictionary.txt文件大小大概953M)
    import itertools as its
    
    def get_WifiPsdDic(len = 8):
        words_num = "1234567890"
        words_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        r = its.product(words_num, repeat=len)
        dic = open("dictionary.txt", "w")
        for i in r:
            dic.write("".join(i))
            dic.write("".join("\n"))
        dic.close()
        
    if __name__ == '__main__':
    #     get_WifiPsdDic(8)
        pass
    
    • 以下提供简单8-10位纯数字或字母的字典生成方案代码(与上一个思路相同)
    import itertools as its
    
    def get_WifiPsdDic(min_len = 8, max_len = 10): # 默认长度为8~10位数
        words = "0123456789abcdefghijklmnopqrstuvwxyz"  # 如需要,可加入大写字母及其他符号
        dic = open('dictionary.txt', 'w')
        for num in range(min_len, max_len+1):  # 长度为min_len ~ max_len位数
            keys = its.product(words, repeat=num)
            for key in keys:
                dic.write("".join(key) + "\n")
        dic.close()
    
    if __name__ == '__main__':
    #     get_WifiPsdDic(2,2)
        pass
    
    • 查看生成文件的大小
    import os
    
    def get_FileSize(filePath):    
        fsize = os.path.getsize(filePath)
        fsize = fsize / float(1024 * 1024)
        return fsize
    
    if __name__ == '__main__':
        # 获取指定文件的大小
        size = get_FileSize("dictionary.txt")
        print("文件大小:%.2f MB"%(size))
    
    
    展开全文
  • 元组与列表的区别为列表的长度没有限制的,但是元组的长度是固定的,并且列表可以做增加,删除,修改的操作,但是元组由于长度固定并不可以作以上操作,只能够查看元组中的元素。其他特性与列表相同,其中存储的...

    经过上节课对于列表的初步认识,本节课引入了元组,集合,字典等具有相似度的数据类型,将他们与列表进行比较并总结出其特点与操作功能。

    元组

    元组——被戴上紧箍咒的列表
    1.元组与列表的对比:
    元组与列表的区别为列表的长度是没有限制的,但是元组的长度是固定的,并且列表可以做增加,删除,修改的操作,但是元组由于长度固定并不可以作以上操作,只能够查看元组中的元素。其他特性与列表相同,其中存储的数据为值,并且可以为多种书记类型(可重复),可排序,并且可以索引与切片。

    2.元组的创建、删除、与特性
    1)元组的定义:turple = (),定义单个值的元组:turple = (‘westos’,),定义多个值的元组:turple = (‘zzq’ ,‘westos’ , ‘pc’)
    2)元组的特性:连接操作符,重复操作符,成员操作符,索引,切片。

    特性:对元组分别赋值,引申对多个变量,也可通过元组方式分别赋值
    在这里插入图片描述

    例题:求加权平均数

    在这里插入图片描述

    3.元组中环境变量的交换
    在这里插入图片描述
    在这里插入图片描述
    4.命名元组
    命名元组是一个类:
    在这里插入图片描述

    集合

    1.集合与列表的对比
    集合存储的数据为键(不可重复,如遇重复的值只保留一个)可以存同一种不可变的数据类型,可以增删改查,不可排序并且,不可读取,无索引无切片,空集合表示时用set()或{}。添加操作为add()。

    2.集合的操作与特性
    集合是一个无序,不重复元素序列。1,2,2,4,4,3 = 1,2,4,3
    1)集合的创建:
    使用大括号{},或者set()函数创建集合。
    **注意:创建空集合必须用set(),而不是{},{}是用来创建一个空字典。

    3.集合的内置属性
    在这里插入图片描述
    4.实例:(1)列表去重
    方法一:依次遍历并判断
    在这里插入图片描述
    方法二:通过集合特性处理
    在这里插入图片描述
    (2)明明的随机数
    生成100个1到1000范围内的随机数,并且进行去重并排列操作。

    在这里插入图片描述

    字典

    1.字典的特性
    字典是另一种可变容器模型,且可存储任意类型对象。
    键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
    格式表述:
    d = {key1:value,key2:value2}
    d = {‘Z’:‘字’,‘D’:’典‘}
    2.字典的创建与删除
    1)简单字典创建
    在这里插入图片描述
    2)内建方法:fromkeys
    字典中的key有相同的value值,默认(未输入时)为none。
    在这里插入图片描述
    3)zip间接创建
    在这里插入图片描述
    5.字典的内建方法
    在这里插入图片描述

    6.利用字典实现python的switch语句
    在这里插入图片描述
    7.字典一键多值问题的实现
    collections.defaultdict类,本身提供了默认值的功能, 默认值可以是整形,列表,集合等.
    需求: 我们想要一个能将键(key)映射到多个值的字(即所谓的一键多值字典)
    解决方案:
    1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。
    2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.

    在这里插入图片描述

    8.内置数据结构总结
    可变数据类型:
    可以增删改。可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

    不可变数据类型:
    不可以增删改。python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

    本节问题

    1.有一个列表,其中包括 10 个元素,例如这个列表是[1,2,3,4,5,6,7,8,9,0],要求将列表中的每个元素一次向前移动一个位置,第一个元素到列表的最后,然后输出这个列表。最终样式是[2,3,4,5,6,7,8,9,0,1]

    2.按照下面的要求实现对列表的操作:
    1). 产生一个列表,其中有 40 个元素,每个元素是 0 到 100 的一个随机整数
    2). 如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
    3). 对上面的列表元素从大到小排序并输出

    在这里插入图片描述
    3.如果将一句话作为一个字符串,那么这个字符串中必然会有空格(这里仅讨论英文),比如"How are you.",但有的时候,会在两个单词之间多大一个空格。现在的任务是,如果一个字符串中有连续的两个空格,请把它删除
    在这里插入图片描述

    展开全文
  • Python数据结构之列表、栈、队列、链表、字典

    千次阅读 多人点赞 2017-11-14 06:39:56
    什么是数据结构简单来说,数据结构就是设计数据以何种方式组织并...而python中则没有这些限制,这是因为二者在内存中存储方式不一样。数组我们知道,计算机将内存分割为字节,每个字节可以存储8位的二进制信息:每个
  • 这里写自定义目录标题字典类型定义字典类型的函数和方法元素遍历 字典类型定义 ...3、字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。 代码演示: >>> s={"中国
  • 列表基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制;列表索引值以0为开始值,-1为从未尾的开始位置。列表可以使用+操作符进行拼接,使用*表示重复。当列表元素增加或删除时,...
  • 列表没有长度限制,元素类型也可以是不同的,不需要预定义长度。 列表类型用中括号([ ])表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。list()函数可生成空列表。 >>> li = [1,2,3,[4...
  • 1.python中的列表没有长度限制,元素类型可以不同,不需要预定义长度。 2.python语言中通过对字典类型实现映射。由于字典元素“键值对”中键是值的索引,因此,可以直接利用键值对关系索引元素。字典是存储可变数量...
  • Python打卡task07

    2020-09-21 16:49:35
    总的来说,一句话:字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值得内容。 通过任意键信息查找一组数据中值信息的过程叫映射,Python语言中通过字典实现映射。并通过大括号{}建立,建立模式为:...
  • Python简答题编程题

    2021-05-28 10:48:57
    简答题 1.列表和元组之间的区别是什么?...​ 没有长度限制,元素类型可以不同,使用非常灵活。例如ls = [425, “BIT”, [10, “CS”], 425] 元组:不可变、有序序列;可以索引切片;( )界定; ​
  • python第七次作业打卡

    2020-09-23 23:19:28
    字典是包含0个或多个键值对的集合,没有长度限制,可以根据键值索引值得内容。 字典是集合类型的延续,所以各个元素之间没有先后顺序。如果想保持一个集合类型中元素的顺序,需要使用列表,而不是字典。 二 字典的...
  • 列表是有序的元素集合,所有元素放在一对[ ]之中,用,隔开,无长度限制 列表索引以0位开始,-1表示末尾开始的位置 列表可以使用+进行拼接,*表示重复 列表元素增加或删除时,列表对象自动进行扩展或内存收缩,保证...
  • 学习python之初识列表

    2020-09-24 14:57:32
    长度没有限制的。 列表中的元素可以是不相同的数据类型,比如整数、实数、字符串、列表、元组、字典以及自定义的类型。 此外: 列表支持关系操作符(in)操作 计算长度(len) 分片([]) 可以使用正向增序和...
  • Python的数据结构有列表、元组、集合、字典等,可以吧列表当成一个清单,是有序的,我们可以通过索引访问到列表中的元素,列表还可以进行修改、新增和删除的操作。列表中的数据类型是不限制的,可以是字符串、数值等...
  • 尹成Python27天入门到项目实战

    千人学习 2020-12-05 17:04:22
    python字符串与绘图复习变量None变量参与运算没有赋值的情况不会改变绘制立方体绘制五角星时间计算强化实现贷款计算连续输入多个字符串加法与绘图实现显示线段长度数据函数使用快速查阅函数帮助字符串三种风格字符...
  • appium - Python+yaml语法

    2019-08-22 22:10:11
    yaml是一种简介的非标记语言。...4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。 5、使用#表示注释。 6、字符串可以不用引号标注。 三种数据结构: 1、字典 使用冒号(...
  • 普通参数,即在调用函数时必须按照准确的顺序来进行参数传递。...元组参数,即*args,参数格式化存储在一个元组中,长度没有限制,必须位于普通参数和默认参数之后。 字典参数,即 **kwargs,参数格式化存储在...
  • 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 解题思路 可以先定义一个字典用来记录每个字符出现的次数,然后从字典里面找出第一个次数等于1的字符即可。 1,定义一个字典dct,然后遍历字符...
  • 剑指Offer_编程题——第一个只出现一次的字符 题目描述: ...  这道题刚开始感觉特别简单,可以用最简答、最粗暴的方法就可以解决,结果发现,其实是错的,其实,我们可以用python中的字典,只要定义一个字
  • 1.1.6 从innodb的索引结构分析,为什么索引的 key 长度不能太长 1.1.7 MySQL的数据如何恢复到任意时间点? 1.1.8 NFS 和 SMB 是最常见的两种 NAS(Network Attached Storage)协议,当把一个文件系统同时通过 ...
  • map不初始化长度和初始化长度的区别 map承载多大,大了怎么办 map的iterator是否安全?能不能一边delete一边遍历? 字符串不能改,那转成数组能改吗,怎么改 怎么判断一个数组是否已经排序 普通map如何不用锁解决...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

python字典没有长度限制

python 订阅