zoukankan      html  css  js  c++  java
  • 列表内置方法,字典方法

    可变与不可变

    可变与不可变是针对数据类型而言的

    按照存值个数划分

    存一个值(数字型/字符串),存多个值(列表/字典)

    x = 1    # 定义变量就会开辟一块新的内存空间存放变量
    print(id(x))   # 140718444700496
    x = x + 1 
    print(id(x))   # 140718444700528
    

    数字类型不可变

    lt = [1]
    print(id(lt))   # 2755985236680
    lt.append(2)
    print(id(lt))   # 2755985236680
    

    列表可变,在原来的内存空间追加值

    总结:

    • 可变:列表、字典
    • 不可变:数字、字符串

    列表内置方法

    索引取值/索引修改值

    lt = [1,2,3,4]
    print(lt[0])  # 1
    lt[0] = 5
    print(lt)  # [5,2,3,4]
    

    索引切片

    lt = [1,2,3,4]
    print(lt[0:2])  # [1,2]
    

    成员运算 in / not in

    lt = [1,2,3,4]
    print(2 in lt) # True
    print(9 not in lt)  # True
    

    for循环

    lt = [1,2,3,4]
    for i in lt:
        print(i)
        
    # 打印结果:
    1
    2
    3
    4
    

    len长度

    lt = [1,2,3,'cwz',[1,23]]
    print(len(lt))  # 5
    

    append() 追加值

    lt = [1,2]
    lt.append(3)
    print(lt)  # [1,2,3]
    

    sort() 排序

    lt = [2,3,1,9,7]
    lt.sort()
    print(lt)   # [1,2,3,7,9]
    
    lt = ['cw','ae','pf']
    lt.sort()
    print(lt)  # ['ae', 'cw', 'pf'] 按照单词第一个字母顺序排序
    

    reverse() 反转

    lt = [2,1,3]
    lt.reverse()
    print(lt)  # [3,1,2]  列表顺序反转
    

    index() 获取元素索引

    lt = [1,2,3,4]
    print(lt.index(2))   # 打印1
    

    clear() 清空列表

    lt = [1,2,3]
    lt.clear()
    print(lt)   # [lt]
    

    copy() 复制

    lt1 = [1,2,3]
    lt2 = lt1.copy()
    print(lt2)   # [1,2,3]
    

    extend() 扩展列表

    lt1 = [1,2,3]
    lt2 = [4,5,6]
    lt1.extend(lt2)
    print(lt1)
    
    # 打印:[1, 2, 3, 4, 5, 6]
    

    remove() 移除

    lt = [1,2,3]
    lt.remove(3)
    print(lt)   # 打印 [1,2]
    

    insert() 按照索引插入值

    lt = [1,2,3,4]
    lt.insert(1, '666')
    print(lt)
    
    # 打印结果: [1, '666', 2, 3, 4]
    

    总结:

    列表内置方法 用法
    append() 追加值
    sort() 列表元素数字从大到小排序;列表元素字母按拼音是顺序排序
    reverse() 列表顺序反转
    extend() lt1.extend(lt2) 列表扩展
    clear() 清空列表
    insert() 按照索引插入值
    remove 移除列表指定值
    copy() lt.copy() 复制列表
    index lt.index(列表元素) 获取元素索引

    字典内置方法

    按key取值 / 按key修改值 / 按key增加值

    dic = {'a':1, 'b':2, 'c':3}
    print(dic['a'])  # 1
    
    dic['a'] = dic['a'] + 9
    print(dic)   # {'a': 10, 'b': 2, 'c': 3}
    
    dic['d'] = 666
    print(dic)   # {'a': 10, 'b': 2, 'c': 3, 'd': 666}
    

    成员运算(比较的是key)

    dic = {'a':1, 'b':2, 'c':3}
    print('name' in dic)  # False
    

    for循环(对key循环)

    dic = {'a':1, 'b':2, 'c':3}
    for i in dic:
        print(i)
        
    # 打印结果:
    a
    b
    c
    

    keys() / values() / items()

    dic = {'a':1, 'b':2, 'c':3}
    print(dic.keys())  # 获取所有key值  dict_keys(['a', 'b', 'c'])
    
    print(dic.values())  # 获取所有value值   dict_values([1, 2, 3])
     
    print(dic.items())   # 获取所有键值对    dict_items([('a', 1), ('b', 2), ('c', 3)])
    

    get() 取值

    dic = {'a':1, 'b':2, 'c':3}
    print(dic.get('a'))  # 取得1
    
    print(dic.get('qq'))   # 字典中没有要找的key值,则返回None
    # 打印:None
    print(dic.get('qq', 66))  # 字典中没有要找的key值,又给定数值,则返回该数值
    # 打印:66
    

    update() 扩展字典

    dic1 = {'a':1}
    dic2 = {'b':2}
    dic1.update(dic2)
    print(dic1)
    
    # 打印结果:
    {'a': 1, 'b': 2}
    

    setdefault() 有则不更改,没有则增加

    dic = {'a':1, 'b':2}
    dic.setdefault('a',2)
    print(dic)    # {'a': 1, 'b': 2}
    
    dic.setdefault('c', 9)
    print(dic)   # {'a': 1, 'b': 2, 'c': 9}
    

    总结:

    字典内置方法 用法
    get() 找到了就找了;没有值返回None,如果给定数值,就返回该数值
    update() dic1.update(dic2) 扩展字典
    setdefault() 有则不更改,没有则增加
    keys() / values() / items() 获取全部key值 / 获取全部value值 / 获取全部键值对

    练习

    1. 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
    
    即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
    
    lt = [11,22,33,44,55,66,77,88,99,90]
    dic = {'k1': [], 'k2': []}
    for i in lt:
        if i > 66:
            dic['k1'].append(i)
        else:
            dic['k2'].append(i)
    
    print(dic)
    
    2. 统计s='hello alex alex say hello sb sb'中每个单词的个数
    
    结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
    
    s = 'hello alex alex say hello sb sb'
    dic = {}
    for i in s.split():
        dic.setdefault(i,s.count(i))
    print(dic)
    
    3. 写代码,有如下变量,请按照要求实现每个功能 
    name = " aleX"
    # 1)    移除 name 变量对应的值两边的空格,并输出处理结果
    # 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果
    # 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果
    # 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
    # 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
    # 6)    请输出 name 变量对应的值的第 2 个字符?
    # 7)    请输出 name 变量对应的值的前 3 个字符?
    # 8)    请输出 name 变量对应的值的后 2 个字符?
    # 9)    请输出 name 变量对应的值中 “e” 所在索引位置?
    # 10)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
    

    (1)

    name = " aleX"
    print(name.strip())
    

    (2)

    print(name.startswith('a1'))
    

    (3)

    print(name.endswith('X'))
    

    (4)

    print(name.replace('l', 'p'))
    

    (5)

    print(name.split('l'))
    

    (6)

    print(name[1])
    

    (7)

    print(name[0:3])
    

    (8)

    print(name[3:])
    

    (9)

    print(name.find('e'))
    

    (10)

    s = 'oldboy'
    print(s.rstrip('y'))
    
    4. 假设有一个文件test.txt,内有如下内容
    l=[
        {'name':'alex','age':84},
        {'name':'oldboy','age':73},
        {'name':'egon','age':18},
    ]
    需求:
    1. 读取文件内容
    2. 计算这三个人的年龄总和
    
    with open('4.txt', 'r', encoding='utf8') as f:
        data = f.read()
        # print(data)
    lt = eval(data[2:])   # eval可将字符串转为列表
    print(lt)
    age = 0
    for i in lt:
        age += i['age']
    print("三人年龄总和为:", age)
    
  • 相关阅读:
    关于如何实现接口IComparer以实现自己需要的排序规则
    随机移动
    关于资源版本管理的问题
    Unity3D内部脚本编程入门
    删除GameObject上除了Quality子物体之外其他子物体的组件(但不删除transform)
    资料
    c# 基础知识点
    c# 匿名方法(委托)
    git
    一篇关于Unity3D优化的文章,翻译脚本优化部分
  • 原文地址:https://www.cnblogs.com/setcreed/p/11436068.html
Copyright © 2011-2022 走看看