zoukankan      html  css  js  c++  java
  • Python数据结构:列表、字典、元组、集合

    列表:shoplist = ['apple', 'mango', 'carrot', 'banana']
    字典:di = {'a':123,'b':'something'}
    集合:jihe = {'apple','pear','apple'}
    元组: t = 123,456,'hello'

    1.列表--------------------------------------------------------------------------------------
        空列表:a=[]
        函数方法:a.append(3)       >>>[3]    
              a.extend([3,4,5])       >>>[3,3,4,5]    添加一个列表序列
              a.insert(1,'hello')        >>>[3,'hello',3,4,5]
              a.remove(3)             >>>['hello',3,4,5] 删除第一个出现的3,没有3则报错
              a.pop()              >>>['hello',3,4]
              a.pop(0)              >>>[3,4]
              a.index(4)          >>>1    返回出现的第一个4的下标
              a.count(3)          >>>1    列表中元素3的个数
              a.sort        >>>[3,4]    排序
              a.reverse()        >>>[4,3]    反序
        删除元素的方法
            a.remove(3)    通过值删除元素,删除第一个为参数值得元素
            a.pop()       通过下标删除元素,默认删除列表最后一个值,带参数则删除下标为参数值的元素
            del a[0]       通过下标删除元素,
                del a[2:4] 删除a表下标为2,3的元素
            del a[:]   删除a列表所有元素
            del a       删除列表
        列表推导式:
            vec = [2,4,6]    
             [3*x for x in vec if x<6]    >>>[6,12]    3*2,3*4
            vec2 = [1,2,3]
            [x*y for x in vec for y in vec2]    >>>[2,4,6,4,8,12,6,12,18]
        嵌套列表推导式:
            mat = [
            [1,2,3],
            [4,5,6],
            [7,8,9]
            ]
            print ([[row[i] for row in mat] for i in [0,1,2]])    
            >>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
        思考:list (zip(mat)) 和 list (zip(*mat))结果会有什么不同


    2.元组---------------------------------------------------------------------------------------------------
        空元组:t = ()
        元组赋值: t = (123,345)
               t[0]         >>>123


    3.字典---------------------------------------------------------------------------------------------------------   
        d = {'Jack':'jack@mail.com','Tom':'Tom@main.com'}
        d['Jack']            >>>'jack@mail.com
        d['Jim'] = 'Jim@sin.com'    >>>{'Jim': 'Jim@sin.com', 'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}             

      del d['Jim']    >>>{'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}
        list(d.keys())    将返回一个字典中所有关键字组成的无序列表
        sorted(d.keys()) 将返回一个字典中所有关键字组成的排序列表
        dict()    构造函数可以直接从key-value对中创建字典
        dict([('Tim',123),('Tiny',234)])    >>>{'Tiny': 234, 'Tim': 123}    
        推导式创建字典:
            {d2:d2+'@main.com' for d2 in list(d.keys())}
                >>>{'Jack': 'Jack@main.com', 'Tom': 'Tom@main.com'}
        练习:循环输出字典中的键值对:
            for name,email in d.items():
                print(name,email)


    4.集合--------------------------------------------------------------------------------------------

     集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。
        空集合:A = set() ※想要创建空集合,必须使用set()
        演示:
        basket = {'apple','orange','apple'}    >>>{'orange', 'apple'}    注意重复的元素只显示一个?
        'apple' in basket              >>>True
        'pear' in basket            >>>False

        集合的数学运算:    
            a = set('ababcdabca')        >>>{'c', 'b', 'a', 'd'}
            b = {'a','b','m'}            >>>{'b', 'a', 'm'}
            a - b        >>>{'c', 'd'}
            b - a        >>>{'m'}
            a | b        >>>{'c', 'd', 'b', 'a', 'm'}
            a & b        >>>{'a','b'}
            a ^ b        >>>{'c','d','m'}
        集合推导式:
           {x for x in a if x not in 'ab'}    >>>{'c','d'}

  • 相关阅读:
    链表--判断一个链表是否为回文结构
    矩阵--“之”字形打印矩阵
    二叉树——平衡二叉树,二叉搜索树,完全二叉树
    链表--反转单向和双向链表
    codeforces 490C. Hacking Cypher 解题报告
    codeforces 490B.Queue 解题报告
    BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
    codeforces 488A. Giga Tower 解题报告
    codeforces 489C.Given Length and Sum of Digits... 解题报告
    codeforces 489B. BerSU Ball 解题报告
  • 原文地址:https://www.cnblogs.com/111testing/p/6517108.html
Copyright © 2011-2022 走看看