Python 列表

2019-12-03  本文已影响0人  以此怀念

列表是Python中的可变序列.在形式上,列表的所有元素都放在一对中括号[]中,两个相邻的元素间使用逗号 , 分隔.
在内容上,可以将整数 实数 字符串 列表 元组等任何类型的内容放入到列表中,并且同一个列表中,元素的类型可以不同.

列表的创建和删除

语法格式:
    listname = [element 1,element 2,element 3,...,element n] 
        其中: listname 表示列表的名称,element表示列表中的元素,个数没有限制,并且只要是Python支持的数据类型就可以

创建数值列表

    语法:
        list_a(date)    
            其中data表示可以转换为列表的数据,其类型可以是range对象 字符串 元组 或者其他可以迭代类型的数据     
# 创建空列表示例:
# list_a = []
# 创建数值列表示例:
# a = list(range(10,20,2))
# print (a)

删除列表

对于已经创建的列表,不再使用时,可以使用del语句将其删除.
    语法:
        del listname    #listname为要删除的列表名称
# 删除列表示例:
# a = ["春天","夏天","秋天","冬天","东","南","西","北"]

访问列表元素

想将列表的内容输出比较简单,直接使用print()函数即可.
# 实例1,输出每日一贴
# import datetime
# # 定义一个列表
# mot =  ["今天星期一:\n坚持下去不是因为我坚强,而是因为我别无选择.",
#         "今天星期二:\n含泪播种的人一定能笑着收获.",
#         "今天星期三:\n作对的事情比把事情作对更重要",
#         "今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯.",
#         "今天星期五:\n不要等到明天,明天太遥远,今天就行动",
#         "今天星期六:\n求知若饥,虚心若愚.",
#         '今天星期日:\n成功将属于那些从不说"不可能"的人']
# day = datetime.datetime.now().weekday()
# print (mot[day])

遍历列表

遍历ilebiao是所有元素中常用的一种操作,在遍历的过程中可以完成查询 处理等功能.在Python中遍历列表的方法有多种,
以下为常用 的两种
    for 循环遍历
        语法:
            for item in listname:
                #输出item
                    其中,item用于保存获取到的元素值,要输出元素内容时,直接输出该变量即可
                        listname为列表名称
                        
    使用for循环和enumerate()函数实现
        语法:
            for index,item in enumerate(listname):
                #输出index和item
                    参数说明:
                        index   用于保存元素的索引
                        item    用于保存获取到的元素值,要实处元素内容时,直接输出该变量即可
                        listname为列表名称
# 使用for循环遍历列表示例:
# a = ["春天","夏天","秋天","冬天","东","南","西","北"]
# for i in a:
#     print (i,end="")

# 使用for循环和enumerate()函数实现
# a = ["春天","夏天","秋天","冬天","东","南","西","北"]
# for index,i in enumerate(a):
#     print (index +1,i)

# 分两列显示列表示例:
# a = ["春天","夏天","秋天","冬天","东","南","西","北"]
# for index, i in enumerate(a):
#     if index % 2 ==0:
#         print (i + "\t\t",end='')       # \t 是制表符
#     else:
#         print (i + "\n")

添加 修改和删除列表元素

添加 修改和删除列表元素也陈伟更新列表.
    添加元素 append()   insert()    extend()
        之前有学到可以通过 + 号将两个序列连接,通过该方法也可以实现未列表添加元素.但是这个方法执行速度要比直接使用列表对象
        的append()方法慢,所以建议使用append()实现.
            insert()该方法用于向指定位置插入元素,但是执行效率没有append高.
            extend()用于将一个列表中的全部元素添加到另一个列表中.
                append()格式:
                    listname.append(obj)
                        其中listname为要添加元素的列表名称,obj为要提阿尼啊到列表末尾的对象
                
                extend()格式:
                    listname.extend(seq)
                        其中listname为原列表,seq为要添加的列表.语句执行后seq的内容将追加到listname的后面.                 
# append()添加元素示例
# a = ["春天","夏天","秋天","冬天"]
# len(a)
# a.append("四季")
# len(a)
# print (a)

# extend()添加元素示例
# a = ["春天","夏天","秋天","冬天"]
# b = ["东","南","西","北"]
# a.extend(b)
# print(a)

修改元素

修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可.
# 修改元素示例:
# a = ["春天","夏天","秋天","冬天"]
# print(a)
# a[3]= "你猜"
# print(a)

删除元素

删除元素有两种情况,一种是根据索引删除,另一种是根据元素值进行删除
    根据索引删除
        使用del语句实现
            语法:
                del 列表名[索引值]
    根据元素值删除
        使用列表对象的remove()方法实现
            语法:
                列表名.remove("元素内容")
        使用remove删除元素时,如果指定元素不存在,将会出现异常信息,所以在使用remove方法删除元素前,最好判断该元素是否存在
# 根据索引删除示例:
# a = ["春天","夏天","秋天","冬天"]
# del a[0]
# print(a)

# 根据元素值删除示例1:
# a = ["春天","夏天","秋天","冬天"]
# shanchu = "夏天"
# if shanchu in a:
#     a.remove(shanchu)
# print(a)

# 根据元素值删除示例2:
# a = ["春天","夏天","秋天","冬天"]
# shanchu = "冬天"
# if a.count(shanchu) >0:
#     a.remove(shanchu)
# print(a)

对列表进行统计和计算

获取指定元素出现的次数
    count()
        语法:
            listname.count(obj)
            其中listname 表示列表的名称
            obj 表示要判断是否存在的对象,这里只能精确匹配,即不能是元素的一部分
            返回值 元素在列表中出现的次数
            
获取指定元素首次出现的下标
    index()
        语法:
            listname.index(obj)
            其中listname 表示列表的名称
            obj 表示要查找的对象,这里只能精确匹配,即不能是元素的一部分,如果对象不存在,则会抛出异常
            返回值 首次出现的索引值
            
统计数值列表的元素和
    Python中,提供了sum()函数用于统计数值列表中各元素的和.
        语法:
            sum(iterable[,start])
                iterable 表示要统计的列表
                start   表示统计结果是从哪个数开始,如果不指定,默认值为0
# 获取指定元素出现的次数示例:
# a = ["春天","夏天","秋天","冬天","秋天","冬天","春天","夏天","秋天"]
# tongji = a.count('冬天')
# print(tongji)

# 获取指定元素首次出现的下标示例:
# a = ["春天","夏天","秋天","冬天","秋天","冬天","春天","夏天","秋天"]
# suoyin = a.index("冬天")
# print(suoyin)

# 统计数值列表的元素和示例:
# fenshu = [90,80,99,85,94,65]
# tongji =sum(fenshu)
# print(tongji)

对列表进行排序

PYthon中提供了两种常用的对列表进行排序的方法,使用列表对象的sort()方法,使用内置的sortd(函数)
    sort()  原列表中的元素顺序发生改变         (sort对中文的支持不太好)
        语法:
            列表名.sort(key=None,reverse=False)
                key 表示指定从每个元素中提取一个用于比较的键(例如,设置"key=str.lower"表示在排序是不区分字母大小写)
                reverse 可选参数,True表示降序排列,False表示升序排列,默认为升序排列
                
    sorted()  原列表中的元素顺序不变
        语法:
            sorted(列表名,key=None,reverse=False)
                key 表示指定从每个元素中提取一个用于比较的键(例如,设置"key=str.lower"表示在排序是不区分字母大小写)
                reverse 可选参数,True表示降序排列,False表示升序排列,默认为升序排列
    
    以上2个方法的作用基本相同,但是sort()方法会改变原列表的元素排列顺序,而stored()会建立一个原列表的副本,该副本为排序
    后的列表    
# sort()示例  原列表中的元素顺序发生改变
# fenshu = [90,80,99,85,94,65]
# fenshu.sort(key=None)
# print(fenshu)

# sorted()示例  原列表中的元素顺序不变
# fenshu = [90,80,99,85,94,65]
# fenshu_fb = sorted(fenshu,key=None)
# print("原列表",fenshu)
# print("新列表",fenshu_fb)

列表推导式

使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表.列表推导式通常有以下几种常用的语法格式
    1.生成指定范围的数值列表
        语法:
            list = [Expression for var in range]
                list 表示生成的列表名称
                Expression  表达式,用于计算新列表的元素
                var 循环变量
                range 采用range()函数生成的range对象
                
    2.根据列表生成指定需求的列表
        语法:
            newlist = [Expression for var in list]
                newlist 表示新生成的列表名称
                Expression  表达式,用于计算新列表的元素
                var 循环变量
                list 用于生成新列表的原列表
                
    3.从列表中选择符合条件的元组组成新的列表
        语法:
            newlist = [Expression for var in list if condition]
                newlist 表示新生成的列表名称
                Expression  表达式,用于计算新列表的元素
                var 循环变量
                list 用于生成新列表的原列表
                condition 条件表达式,用于指定筛选条件
# 1.生成指定范围的数值列表示例
# import random
# # a = [random.randint(10,100) for i in range(10)]
# # print(a)

# 2.根据列表生成指定需求的列表:定义一个列表,然后用列表推导式生成一个将全部元素减半的列表
# import random
# a = [random.randint(100,1000) for i in range(10)]
# print('原列表',a)
# b = [x*0.5 for x in a]
# print('新列表',b)

# 3.从列表中选择符合条件的元组组成新的列表
# a = [142, 322, 204, 617, 304, 353, 264, 786, 582, 799]
# b = [i for i in a if i >= 500]
# print(b)

二维列表的使用

在Python中,由于列表元素还可以是列表,所以它也支持二维列表的概念.
二维列表中的信息以行和列的形式表示,第一个下标表示元素所在的行,第二个下标表示元素所在的列.
在Python中,创建二维列表有以下三种常用的方法.
    1.直接定义二维列表
        语法:
            listname = [[元素11,元素12,元素13,...,元素1n],
                        [元素21,元素22,元素23,...,元素2n],
                        ...
                        [元素n1,元素n2,元素n3,...,元素nn]]
                        
    2.使用嵌套的for循环创建
        arr = []    #创建一个空列表
        for i in range(4):
            arr.append([])  #在空列表中再添加一个空列表
            for j in range(5):
                arr[i].append(j)    #为内层列表添加元素
        print(arr)
        
    3.使用列表推导式创建
        erwei = [[i for i in range(5)] for j in range(4)]
        print(erwei)
# 使用二维列表输出不同版式的古诗
# zfc1 = "千山鸟飞绝"
# zfc2 = "万径人踪灭"
# zfc3 = "孤舟蓑笠翁"
# zfc4 = "独钓寒江雪"
# test = [list(zfc1),list(zfc2),list(zfc3),list(zfc4) ]
# for i in range(4):
#     for j in range(5):
#         if j == 4:
#             print(test[i][j])
#         else:
#             print(test[i][j],end='')
# test.reverse()
# print('---'* 30)
# for i in range(5):
#     for j in range(4):
#         if j == 3:
#             print(test[j][i])
#         else:
#             print(test[j][i],end='')
上一篇下一篇

猜你喜欢

热点阅读