zoukankan      html  css  js  c++  java
  • Python基础-列表、字典

    1、列表(list)

         python中最常见的一种数据类型,用"[]"中括号将元素括起来,逗号分开,列表中的元素是可以进行增删查改等一系列操作的。

    # int float str list
    s = '王月、张娜、宋雪艳、刘姐、王何、程月香'
    #     1    2     3     4    5     6
    # 定义列表
    stus = ['王月', '张娜', '宋雪艳', '刘姐', '王何', '程月香']  # 下标、角标、索引
    #         0       1       2       3      4        5
    stu2 = []  # 定义一个空的列表
    # 1、新增
    stus.append('唐玉亮')  # 把元素加到列表的最后
    stus.insert(1, '徐静')  # 指定位置加入
    print(stus)
    # 2、修改
    stus[0] = '王小月'
    print(stus)
    # 3、删除
    stus.pop()  # 默认删除组后一个元素
    stus.pop(0)  # 删除指定的下标的元素
    stus.remove('王何')  # 指定元素,删不存在元素报错
    del stus[3]  # 也可删除
    stus.clear()  # 清空列表
    print(stus)
    # 4、取值(根据下标取)
    print(stus)
    print(stus[0])
    print(stus[3])
    
    # 其他的方法
    l2 = [1, 54, 77, 2, 3, 15, 1]
    l2.reverse()
    print(l2)
    print(l2.count(1))  # 统计元素出现的次数
    print(l2.index(77))  # 找指定元素的索引,不存在报错
    l2.sort()  # 对list进行排序,默认是升序排序
    l2.sort(reverse=True)  # 降序,不能直接print
    print(l2)
    l3 = l2.copy()  # 复制一个list
    l2.extend(stus)  # 合并两个list
    print(l2)

     (1)list练习

    import datetime
    
    today = datetime.datetime.today()
    usernames = ['xiaohei', 'xiaobai', 'xiaoming']
    passwords = ['123456', '11111', '1']
    # 登录
    # username = input('username:')
    # password = input('password:')
    # 欢迎 xxx登录,今天的是时间是xxx。
    # 登录错误次数过多,最多登录3次
    # 需求分析:
    # 1、循环3次
    # 2、输入账号和密码
    # 3、判断账号是否存在 in count
    # 4、根据账号取到账号的下标,然后用下标取到密码
    # 5、判断账号/密码是否正确
    
    for i in range(3):
        username = input('username:')
        if usernames.count(username) > 0:
            index = usernames.index(username)
            password = passwords[index]
            pwd = input('password:')
            if password == pwd:
                print('欢迎%s登陆,时间是%s' % (username, today))
                break
            else:
                print('密码错误')
        else:
            print('账号不存在')
    else:
        print('失败次数过多')

    运行结果:

    username:xiaohei
    password:123456
    欢迎xiaohei登陆,时间是2020-08-10 22:51:02.518212

    2、字典

    # 字典是用来存储一对键值对的数据类型,使用大括号括起来,键值对中间使用冒号分割
    # 字典key-value,字典是无序的
    # list取值,得挨个找,速度慢
    # 字典取值,是直接根据key来查找,速度快
    # 一维数组
    names = ['name1', 'name2']
    phone = ['1111', '1111']
    addr = ['xxxx', 'xxxxx']
    # 二维数组
    infos = [
        ['name1', '1111', 'beijing'],
        ['name2', '2222', 'shanghai'],
        ['ccx', '33333', 'guangzhou']
    ]
    # 数组取值
    print(infos[-1][0])  # list下标为-1,代表取最后一个元素,运行结果:ccx
    
    # 字典是用来存储一对键值对的数据类型,使用大括号括起来,键值对中间使用冒号分割
    # 字典key-value,字典是无序的
    # list取值,得挨个找,速度慢
    # 字典取值,是直接根据key来查找,速度快
    
    stu_info1 = {}  #定义一个空的字典
    
    stu_info = {
        'name': 'ccc',
        'phone': '11111111',
        'addr': 'bj'
    }
    print(stu_info)
    # 增加
    stu_info['age'] = 18    #如果key值已存在,则修改
    stu_info.setdefault('qq', '602647962')    #如果key值已存在,则保持原样
    stu_info['name'] = 'nnn'
    stu_info.setdefault('name', 'nnn')
    #如果key值不存在,两者没有区别
    print(stu_info)
    # 修改
    stu_info['name'] = 'nnn'  # 修改
    print(stu_info)
    # 删除
    stu_info.pop('age')    #删除不存在的key值,会报KeyError
    del stu_info['name']
    print(stu_info)
    
    # 取值
    print(stu_info.get('phone'))   #取不存在的key值,返回None
    print(stu_info['qq'])   #取不存在的key值,报KeyError
    print(stu_info.get('sex', ''))  #get不到key值,会返回默认值,如果get到值,则默认值不起作用
    print(stu_info)
    
    new_stu_info = stu_info.copy()   #拷贝到别的字典
    stu_info.clear()   #清空字典
    print(stu_info.keys())   # 所有的key
    print(stu_info.values())  # {s1:100,s2:200,s3:300} 所有value
    print(stu_info.items())   #把字典变成了一个二维数组
    
    stu_info.update(name='xh', money=5000)   #可以修改字段值,也可以新增key-value
    print(stu_info)

    3、list、字典用len取长度

    usernames = ['xiaohei', 'xiaobai', 'xiaoming']
    passwords = ['123456', '11111', '1']
    print(len(usernames))
    d = {'name': 1, 'ses': 0}
    print(len(d))

    运行结果:

    3
    2

    4、list转换成字典

    usernames = ['xiaohei', 'xiaobai', 'xiaoming']
    passwords = ['123456', '11111', '1']
    d = {}  #定义一个空得字典
    i = 0
    while i < len(usernames):  # 0<3,计算下标得方式
        username = usernames[i]
        password = passwords[i]
        d[username] = password
        i += 1
    print(d)

    运行结果:

    {'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}

    5、list和字典都是可以循环的

    for i in range(5):  # for循环会产生一个list,如:[0,1,2,3,4]
        print(i)
    
    d = {'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}
    for a in d:  # 直接循环字典得key
        print(a)

    运行结果:

    0
    1
    2
    3
    4
    xiaohei
    xiaobai
    xiaoming

    6、取字典的key和value的两种方式

    # 取字典的key和value的两种方式
    d = {'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}
    # 第一种:
    for key in d:   # 循环字典得key
        value = d.get(key)   # 根据key取value,推荐使用
        print('%s->%s' % (key, value))
    # 第二种:
    for key, value in d.items():  # 效率不高,因为d.items()先把一个字典转成了一个list
        print('%s->%s' % (key, value))

    运行结果:

    xiaohei->123456 
    xiaobai->11111
    xiaoming->1

    小例子(二维数组):

    #二维数组取值
    l = [
        ['xiaohei', '123456'],
        ['xiaobai', '11111'],
        ['xiaoming', '1']
    ]
    for i, j in l:  # for后面得变量名就是list里得元素
        print(i, j)

    运行结果:

    xiaohei 123456
    xiaobai 11111
    xiaoming 1
  • 相关阅读:
    介绍一下Markdown语言
    通向架构师的道路(第一天)之Apache整合Tomcat lifetragedy的专栏 博客频道 CSDN.NET
    中国分省市地图导航SVG格式(基于Raphaël)
    异构计算完全解析CSDN.NET
    cocos2dx开启Wifi
    用“Web的思想”做PC客户端
    高斯模糊原理及几个实现例子
    android开启Wifi AP
    perl函数映射
    显示Iframe指定位置
  • 原文地址:https://www.cnblogs.com/ccxm/p/13477358.html
Copyright © 2011-2022 走看看