zoukankan      html  css  js  c++  java
  • Python基础列表、元组

    一、什么是列表、元组

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

    Python有6个序列的内置类型,但最常见的是列表和元组。

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

    列表的数据项不需要具有相同的类型

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    1 list1 = ['chenshifeng', 'abhui', 1992, 1995]
    2 list2 = [1, 2, 3, 4, 5 ]
    3 list3 = ["a", "b", "c", "d"]
    4 print(list1)
    5 print(list2)
    6 print(list3)

    与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

    如何访问列表里的值呢?

    使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:

    list1 = ['chenshifeng', 'anhui', 1992, 1995]
    list2 = [1, 2, 3, 4, 5,6 ]
    print ("list1[0]: ", list1[0])
    print ("list2[1:5]: ", list2[1:5])

    以上代码的输出结果为:

    list1[0]:  chenshifeng
    list2[1:5]:  [2, 3, 4, 5]

    Python 的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号。其他方法或功能基本一样,不同的是,元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

    tup1 = (50)
    print(type(tup1))     # 不加逗号,类型为整型
    
    tup1 = (50,)
    print(type(tup1))    # 加上逗号,类型为元组

     结果为

    <class 'int'>
    <class 'tuple'>

    二、如何更新或修改列表数据

    1、增

    list1 = ['chenshifeng', 'anhui', 1992, 1995]
    list1.append('一个90后的测试之路')  #增加在末尾
    list1.insert(2,'hangzhou')  #指定增加位置
    print(list1)

    结果为:

    ['chenshifeng', 'anhui', 'hangzhou', 1992, 1995, '一个90后的测试之路']

    使用append()方法只能在列表的最后增加数据

    2、删

    list1 = ['chenshifeng', 'anhui', 'hangzhou', 1992,1993, 1995, '一个90后的测试之路']
    print(list1.pop(2))  #删除指定位置数据,并返回删除数据,删除数据为 hangzhou
    list1.remove(1993)   #使用该方法,如果匹配的数据有多个,只会删除下标最靠前的一个数据
    del list1[2]    #指定要删除的列表的下标,此时下标2数据为1992
    print(list1)

    结果为:

    ['chenshifeng', 'anhui', 1995, '一个90后的测试之路'

    3、改

    list1 = ['chenshifeng', 'anhui', 1992, 1995]
    print(list1)
    list1[1] = '一个90后的测试之路'
    print(list1)

    结果为:

    ['chenshifeng', 'anhui', 1992, 1995]
    ['chenshifeng', '一个90后的测试之路', 1992, 1995]

    元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

    tup1 = ('chenshifeng', '90后')
    tup2 = (90,88.88)
    
    # 以下修改元组元素操作是非法的。
    # tup2[0] = 100
    
    # 创建一个新的元组
    tup3 = tup1 + tup2
    print (tup3)

    结果为

    ('chenshifeng', '90后', 90, 88.88)

    元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

    tup = ('chenshifeng', '90后', 1995, 2000)
    print (tup)
    del tup;#元组不能删除指定元素,只能全部删除
    print (tup)

    以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

    ('chenshifeng', '90后', 1995, 2000)
    Traceback (most recent call last):
      File "D:/pythoncode/test1.py", line 12, in <module>
        print (tup)
    NameError: name 'tup' is not defined

    三、Python列表脚本操作符

    列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

    print(len([1, 2, 3]))#计算列表长度
    print([1, 2, 3] + [4, 5, 6])#组合两个列表
    print(['Hi!'] * 4)#复制列表元素
    print(3 in [1, 2, 3])#判断元素是否在列表中,返回布尔值
    #遍历列表元素
    for x in [1, 2, 3]:
        print(x, end=" ")

    运行结果为: 

    3
    [1, 2, 3, 4, 5, 6]
    ['Hi!', 'Hi!', 'Hi!', 'Hi!']
    True
    1 2 3 
    Process finished with exit code 0

    以上操作符用于适用于元祖不再举例

    四、嵌套列表

    使用嵌套列表即在列表里创建其它列表

    a = ['a', 'b', 'c']
    n = [1, 2, 3]
    x = [a, n]
    print(x)
    print(x[0])
    print(x[0][1])

    运行结果:

    [['a', 'b', 'c'], [1, 2, 3]]
    ['a', 'b', 'c']
    b

    以上嵌套同样也适用于元祖

    五、列表函数&方法

    函数:

    len(list):列表元素个数
    max(list):返回列表元素最大值
    min(list):返回列表元素最小值
    list(seq):将元组转换为列表

    list1 = ['chenshifeng', 'anhui','fuyang','yingshang','liushipu']
    seq = ('chenshifeng', 'anhui','fuyang','yingshang','liushipu')
    print(len(list1))#列表元素个数
    print(max(list1))#返回列表元素最大值
    print(min(list1))#返回列表元素最小值
    print(list(seq))#将元组转换为列表

    执行结果为:

    对于元祖来说,可以将列表转换为元祖

    list = ['chenshifeng', 'anhui','fuyang','yingshang','liushipu']
    tuple = tuple(list) #将列表转换为元组。
    print(tuple)

    执行结果为

    ('chenshifeng', 'anhui', 'fuyang', 'yingshang', 'liushipu')

    方法:

    list.append(obj) :  在列表末尾添加新的对象
    list.count(obj)  : 统计某个元素在列表中出现的次数 

    list.extend(seq) : 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

    list.index(obj) :  从列表中找出某个值第一个匹配项的索引位置

    list.insert(index, obj) : 将对象插入列表
    list.pop(obj=list[-1]) :移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    list.remove(obj) :移除列表中某个值的第一个匹配项

    list.reverse() :反向列表中元素

    list.sort(reverse=True)#排序,默认是升序,写上reverse=True就是降序了

    list.clear() :清空列表
    list.copy() :复制列表

    list = ['chenshifeng', 'anhui','fuyang','yingshang','liushipu']
    seq = ['zhejiang','hangzhou']
    list.append('anhui') #在列表末尾添加新的对象
    print(list)
    count = list.count('anhui') #统计某个元素在列表中出现的次数
    print(count)
    list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    print(list)
    index = list.index('anhui')#从列表中找出某个值第一个匹配项的索引位置
    print(index)
    list.insert(1, '90后')#将对象插入列表
    print(list)
    list.pop()#移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    print(list)
    list.remove('liushipu')#移除列表中某个值的第一个匹配项
    print(list)
    list.reverse()#反向列表中元素
    print(list)
    list.sort()#对原列表进行排序
    print(list)
    list.copy()#复制列表
    print(list)
    list.clear()#清空列表
    print(list)

    结果为

    ['chenshifeng', 'anhui', 'fuyang', 'yingshang', 'liushipu', 'anhui']
    2
    ['chenshifeng', 'anhui', 'fuyang', 'yingshang', 'liushipu', 'anhui', 'zhejiang', 'hangzhou']
    1
    ['chenshifeng', '90后', 'anhui', 'fuyang', 'yingshang', 'liushipu', 'anhui', 'zhejiang', 'hangzhou']
    ['chenshifeng', '90后', 'anhui', 'fuyang', 'yingshang', 'liushipu', 'anhui', 'zhejiang']
    ['chenshifeng', '90后', 'anhui', 'fuyang', 'yingshang', 'anhui', 'zhejiang']
    ['zhejiang', 'anhui', 'yingshang', 'fuyang', 'anhui', '90后', 'chenshifeng']
    ['90后', 'anhui', 'anhui', 'chenshifeng', 'fuyang', 'yingshang', 'zhejiang']
    ['90后', 'anhui', 'anhui', 'chenshifeng', 'fuyang', 'yingshang', 'zhejiang']
    []

    对于元祖,仅支持count、index方法

     六、列表生成器

    Python中,列表可以使用for循环生成列表,先看一下例子

    例1、

    i = [0,1,2,3,4,5,6]
    print ([ x*2 for x in i] )

     结果为

    [0, 2, 4, 6, 8, 10, 12]

    上面的例子表示把列表i的每个元素*2,也可以直接用 print ([ x*2 for x in range(6)] )实现,关于range函数后续再讲。

    例2、

    i = [x for x in range (20) if not x % 2]
    print(i)

     结果为

    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    这是个编程语句,意思是输出20以内除以2无余数的数字,即偶数。有些人用于QQ签名等,是隐晦的表达“求偶”之意
  • 相关阅读:
    Orcle 导入数据eurusd.ctl
    Maven系列2pom.xml 配置详解
    UML关联&泛化的区别
    maven 创建工程
    maven 打包
    jprofiler安装和配置
    设计模式出现之前的几大原则
    检查启动情况linux
    领域模型
    解压命令tar
  • 原文地址:https://www.cnblogs.com/feng0815/p/7551259.html
Copyright © 2011-2022 走看看