zoukankan      html  css  js  c++  java
  • python基础(三)列表、元组、字典

    列表与元组

    列表是最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

    定义列表

    
    
    1 >>> names = ['wangeq','zlx','jack','rose'] 

    列表的几种操作方法

     1 #通过下标访问列表中的元素,下标从0开始计数
     2 >>> #
     3 >>> names[0]
     4 'wangeq'
     5 >>> names[0:3]
     6 ['wangeq', 'zlx', 'jack']
     7 >>> names.index("rose")
     8 3
     9 >>> names
    10 ['wangeq', 'zlx', 'jack', 'rose']
    11 >>> #
    12 >>> names.append('jun')
    13 >>> names
    14 ['wangeq', 'zlx', 'jack', 'rose', 'jun']
    15 >>> names.insert(2,'li')
    16 >>> names
    17 ['wangeq', 'zlx', 'li', 'jack', 'rose', 'jun']
    18 >>> #
    19 >>> names.remove('li')
    20 >>> names.insert(2,'rose')
    21 >>> names
    22 ['wangeq', 'zlx', 'rose', 'jack', 'rose', 'jun']
    23 >>> names.remove('zlx')
    24 >>> names
    25 ['wangeq', 'rose', 'jack', 'rose', 'jun']
    26 >>> names.index('rose')
    27 1
    28 >>> del names[names.index('rose')]
    29 >>> names
    30 ['wangeq', 'jack', 'rose', 'jun']
    31 >>> #
    32 >>> names.index('jack')
    33 1
    34 >>> names[1]= 'JACK'
    35 >>> names
    36 ['wangeq', 'JACK', 'rose', 'jun']
    37 >>> 
    38 >>> names[names.index('JACK')] = 'jack'
    39 >>> names
    40 ['wangeq', 'jack', 'rose', 'jun']
    41 >>> 
    42 >>> #计数
    43 >>> names = ['wangeq','rose','li', 'jack', 'rose', 'jun']
    44 >>> names.count('rose')
    45 2
    46 >>> #排序
    47 >>> names.sort()
    48 >>> names
    49 ['jack', 'jun', 'li', 'rose', 'rose', 'wangeq']
    50 >>> names.reverse()
    51 >>> names
    52 ['wangeq', 'rose', 'rose', 'li', 'jun', 'jack']
    53 >>> #扩展
    54 >>> names = ['wangeq','rose','li', 'jack', 'rose', 'jun']
    55 >>> names2 = ['wangeq','zhang','wang']
    56 >>> names.extend(names2)
    57 >>> names
    58 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang', 'wang']
    59 >>> #清除列表所有内容
    60 >>> names2
    61 ['wangeq', 'zhang', 'wang']
    62 >>> names2.clear()
    63 >>> names2
    64 []
    65 >>> #剔除列表最后一个对象并返回
    66 >>> names
    67 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang', 'wang']
    68 >>> names.pop()
    69 'wang'
    70 >>> names
    71 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang']
    71 >>> #复制 浅复制
    72 >>> names
    73 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang']
    74 >>> names3= names.copy()
    75 >>> names
    76 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang']
    77 >>> names3
    78 ['wangeq', 'rose', 'li', 'jack', 'rose', 'jun', 'wangeq', 'zhang']

    拓展:删除列表中第二个相同的对象(并无意义)

    1 names = ['wangeq','li','zhou','jack','li','san']2 first_index = names.index("li")
    3 secode_index = names[first_index+1:].index("li")
    4 del names[first_index+secode_index+1]
    6 print(names)

    元组:

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

    1 >>> names = ("wang","zhou","zhang","li")

    只有两种方法,

    计数 count

    标记下标 index

    字典

    字典一种key - value 的数据类型

    语法:

    1 info = {
    2     'stu1101': "wangeq",
    3     'stu1102': "zhangsan",
    4     'stu1103': "lisi",
    5 }

    字典特性:

    • dict是无序的
    • key必须是唯一的,去重

    字典功能:

    查找

     1 info = {
     2     "stu1101",{"name":"wangeq","age":22},
     3     "stu1102","zhangsan",
     4     "stu1103","lisi"
     5 }
     6 print(info)
     7 {'stu1103': 'alex', 'stu1102': 'jack', 'stu1101': {'name': 'wangeq', 'age': 22}}
     8 print(info["stu1101"]["name"])
     9 wangeq
    10 print("stu1102" in info)  #标准
    11 True
    12 print(info.get("stu1102")) #获取
    13 jack
    14 print(info["stu1102"])   #同上
    15 jack
    16 #print(info["stu1105"]) #key 不存在,KeyError: 'stu1105',get不会报错,会返回"None"

    增加

    1 info["stu1104"] = ["zhang",32,"abc"]
    2 print(info)
    3 {'stu1103': 'alex', 'stu1102': 'jack', 'stu1101': {'name': 'wangeq', 'age': 22}, 'stu1104': ['zhang', 32, 'abc']

    更新

    1 names["stu1104"][0] ="ZHANG"
    2 print(names)
    3 {'stu1103': 'alex', 'stu1102': 'jack', 'stu1101': {'name': 'wangeq', 'age': 22}, 'stu1104': ['ZHANG', 32, 'abc']}

    删除

    1 info.pop("stu1105","error")   #删除stu1105,如不存在,返回error;标准删除
    2 del info["stu1103"]
    3 print(info)
    4 {'stu1102': 'jack', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'age': 22, 'name': 'wangeq'}}
    5 info.popitem() #随机删除

    复制

    #内置copy函数 浅复制
    info2=info.copy()
    
    info["stu1102"] = "JACK"
    print(info)
    print(info2)
    {'stu1102': 'JACK', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'age': 22, 'name': 'wangeq'}}
    {'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'age': 22, 'name': 'wangeq'}, 'stu1102': 'jack'}
    info["stu1101"]["age"] = 33
    print(info)
    print(info2)
    {'stu1102': 'JACK', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'age': 33, 'name': 'wangeq'}}
    {'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'age': 33, 'name': 'wangeq'}, 'stu1102': 'jack'}
     
    #深复制
    import copy
    info3 = copy.deepcopy(info)
    info["stu1102"] = "jack2"
    print(info)
    print(info2)
    {'stu1102': 'jack2', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 33}}
    {'stu1102': 'JACK', 'stu1101': {'name': 'wangeq', 'age': 33}, 'stu1104': ['ZHANG', 32, 'abc']} info["stu1101"]["age"] = 40 print(info) print(info2) {'stu1102': 'jack2', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 40}} {'stu1102': 'JACK', 'stu1101': {'name': 'wangeq', 'age': 33}, 'stu1104': ['ZHANG', 32, 'abc']}

    其它功能

    #values
    print(info.values())
    dict_values([['ZHANG', 32, 'abc'], 'jack2', {'name': 'wangeq', 'age': 40}])
    
    #keys
    print(info.keys())
    dict_keys(['stu1102', 'stu1104', 'stu1101'])
    
    #setdefault
    #dict.setdefault(key, default=None)
    print(info)
    {'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 40}, 'stu1102': 'jack2'}
    print(info.setdefault("stu1106","zhouwu")) #键不存在,添加并返回默认值
    zhouwu
    print(info)
    {'stu1106': 'zhouwu', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 40}, 'stu1102': 'jack2'}
    print(info.setdefault("stu1102"))    #键存在,返回stu1102 values值
    jack2
    print(info)   
    {'stu1106': 'zhouwu', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 40}, 'stu1102': 'jack2'}
    
    #update
    b = {"stu1102":"JACK"}
    print(b)
    {'stu1102': 'JACK'}
    info.update(b)
    print(info)
    {'stu1106': 'zhouwu', 'stu1104': ['ZHANG', 32, 'abc'], 'stu1101': {'name': 'wangeq', 'age': 40}, 'stu1102': 'JACK'}
    
    #items
    print(info.items())
    dict_items([('stu1101', {'name': 'wangeq', 'age': 40}), ('stu1104', ['ZHANG', 32, 'abc']), ('stu1106', 'zhouwu'), ('stu1102', 'JACK')])
    #循环dict
    #one
    for key in info:
        print(key,info[key])
    #two
    for k,v in info.items(): #会先把dict转成list,数据里大时莫用
        print(k,v)
    
    #通过列表生成默认dict
    info4 =dict.fromkeys([1,2,3],'test')
    print(info4)
    {1: 'test', 2: 'test', 3: 'test'}
    作者:wangeq
    出处:http://www.cnblogs.com/wangeq/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
  • 相关阅读:
    P1410 子序列 (动态规划)
    P2085 最小函数值 (堆)
    [ZJOI2007]棋盘制作 (单调栈,动态规划)
    [ZJOI2005]午餐 (贪心,动态规划)
    黑匣子_NOI导刊2010提高 (对顶堆)
    [BZOJ1455] 罗马游戏 (左偏树||并查集)
    P1651 塔 (动态规划)
    两类斯特林数 (组合数学)
    从编程到工程
    失败的过程也是过程
  • 原文地址:https://www.cnblogs.com/wangeq/p/6290428.html
Copyright © 2011-2022 走看看