python中,我们经常用到元组和列表,本文主要总结了一下元组和列表的一些基本用法。 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:
#文件:teamList.py
#日期:2018-05-06
#备注:本文主要介绍了python中元组、列表和字典的相关知识,元组是不可以更改的,列表和字典是可以更改的。     
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

from collections import Counter   #引入Counter
import json

# 元组的相关信息
def tuple_info():
    x1 = (5, 6, 2, 6)
    x = 5, 6, 2, 6     # 或者这样写

    # 不管是元组还是列表,访问元素都是从0这个索引开始的
    print(x[0])
    print(x1[1])


# 2.列表相关信息,相当于java中的数组
def list_info():
    y = [5, 6, 2, 6]
    y1 = [1,1]
    print(y[0])

    for bian_li in y:
        print(bian_li)

    for fanxiang_bian_li in reversed(y):           # 反向遍历一维列表所有数据
        print(fanxiang_bian_li)

    y.append(2)
    print("append()方法,就是在列表尾部添加元素:", y)
    y.insert(2, 99)
    print("insert()方法,在列表索引2位置即第三个位置添加元素:", y)
    y.pop()
    print("pop()方法,在列表删除最后一个元素:", y)
    y.remove(2)
    print("remove(数值)方法,在列表删除元素,如果有多个相同数值,默认删除第一个:", y)
    y.remove(y[1])
    print("remove(索引)方法,在列表删除索引元素,第一个:", y)
    y.reverse()
    print("reverse()方法,对列表元素进行翻转:", y)
    y.extend(y1)
    print("extend(列表)方法,对y1列表合并到y:", y)

    z = [5, 6, 2, 6]
    print("查找列表某个元素出现的次数:", z.count(6))
    print("从左边索引到右边索引但是不包括右边索引,即第1个到第4个:", z[0:4])
    print("倒数第一个数字,-2代表倒数第二:", z[-1])
    print("查找列表某个元素的索引,如果有多个值,默认找第一个元素,如果找不到元素就报错:", z.index(6))
    z.sort()                                    # reverse = True 降序,reverse = False 升序(默认)
    print("sort()方法,元素值从小到大排序:", z)

    # 判断列表是否有重复元素,先转化为集合类型去除重复数据,再对比列表和集合的长度
    if len(z)!=len(set(z)):
        print("列表Z含有重复元素")
        print("去除列表重复元素得到集合set(z):",type(set(z)))
        print('集合set类型:', set(z))
        b = dict(Counter(z))
        print('列表每个元素的个数统计:',b)
        print({key: value for key, value in b.items() if value > 1})  # 展现重复元素和重复次数
    else:
        print("列表Z不含有重复元素")

    # 判断列表是否包含或者不包含某个元素
    if 5 in z:
        print("列表中包含元素5")
    if 7 not in z:
        print("列表中不包含元素7")

    # 二维列表
    x2 = [[5, 6], [6, 7], [7, 2], [2, 5], [4, 9]]
    print("二维列表第一个子列表:[5,6]>>>", x2[0])
    print("二维列表第一个子列表中第二值:6>>>", x2[0][1])

    # 三维列表
    x3 = [[[5, 7], [6, 6]], [[6, 6], [7, 8]], [7, 2], [2, 5]]
    # 相当于
    y3 = [
        [[5, 7], [6, 6]],
        [[6, 6], [7, 8]],
        [7, 2],
        [2, 5]
    ]
    print("3维列表第2个二维列表中第1个子列表第1个值:6>>>", x3[1][0][0])
    print("3维列表第4个子列表第1个值:2>>>", y3[3][0])
    # 如果print(y3[3][0][0])报错,因为3维列表第4个是一维列表

    # 对二维空列表赋值
    list = []
    f = 100
    for i in range(1,8):
        row = []
        for j in range(1):
            row.append(i)
            row.append(f)
            f =f +1
        list.append(row)
    print("二维列表赋值:",list)

    # 遍历二维列表
    for i in range(len(list)):
        print(list[i][0])
        print(list[i][1])


def dict_info():
    dict_list ={
        'base_resp': {
            'ret': 0,
            'errmsg': 'ok'
        },
        'enabled': 1,
        'elected_comment': [{
            'id': 1,
            'nick_name': '十语荐书',
            'content': '今日得到:',
            'create_time': 1544136635,
            'content_id': '344222885537120675',
            'like_num': 108,
            'is_from_friend': 0,
            'reply': {
                'reply_list': []
            },
        }],
        'friend_comment': [],
        'elected_comment_total_cnt': 14,
        'only_fans_can_comment': False
    }

    print("dict_list为字典类型:", type(dict_list))
    print("获取字典里面的value值(值):",dict_list['base_resp']['errmsg'])
    elected_comment = dict_list['elected_comment']
    print("获取字典里面的value值(列表):",elected_comment)
    for comment in elected_comment:
        print("另外一种获取字典里面的value值(值):",comment.get('content_id'))

    # 1.遍历字典key值,value值:一般为字符串,如果字典为复杂情况, 这个时候会出现字符串,列表等类型
    for key in dict_list:
        print("遍历字典key+value值1:", key, dict_list[key])

    for key in dict_list.keys():
        print("遍历字典key+value值2:", key, dict_list[key])

    for value in dict_list:
        print("遍历字典key+value值3:", value, dict_list[value])

    for key, value in dict_list.items():
        print("遍历字典key+value值4:", key, value)

    for (key, value) in dict_list.items():
        print("遍历字典key+value值5:", key, value)

    # 2.遍历字典项,得到的是元组类型
    print(dict_list.items())
    print("dict_list.items()为dict_items类型:", type(dict_list.items()))
    for item in dict_list.items():
        print("遍历字典项得元组:", item)
        print("这里的item为元组类型:", type(item))


    # dict转换json格式(str)
    # indent:缩进空格式; sort_keys=True:排序,默认不排序; ensure_ascii:默认输出为ASCII字符,False可以输出中文;
    # separators 去掉‘,’ ‘:’后面的空格; skipkeys:可以跳过那些非string对象当作key的处理
    dict_json = json.dumps(dict_list, indent=4, ensure_ascii=False, sort_keys=True, separators=(',', ':'),skipkeys=True)
    print("dict_json为str类型:", type(dict_json), dict_json)

if __name__ == '__main__':
    #tuple_info()
    #list_info()
    dict_info()