• py教程第9讲-元组和列表之一


    可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的Python 对象。和数
    组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
    列表和元组有几处重要的区别。列表元素用中括号( [ ])包裹,元素的个数及元素的值可
    以改变。元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是
    只读的列表。通过切片运算( [ ] 和 [ : ] )可以得到子集(子集还是列表或者元组),这一点与字符串的使用方法一样。

    列表:可以被修改,可以增长可以缩短,也可以嵌套。

    >>> list1 = [1, 'nihao', 3.14, 50, 1000]
    >>> list1[3]
    50
    >>> list1.append(2)  #append()方法只能在末尾追加
    >>> list1
    [1, 'nihao', 3.14, 50, 1000, 2]

    >>> list1
    ['nihao', 3.14, 50, 100, 2, '父亲', '5']
    >>> list1.insert(0, 23)  #insert(n, x)可以在任意位置追加元素,插在第n号元素之后,索引值n超过原列表值时,直接追加在末尾
    >>> list1
    [23, 'nihao', 3.14, 50, 100, 2, '父亲', '5']

    >>> list1.insert(8, 1000)
    >>> list1
    [23, 'nihao', 3.14, 50, 100, 2, '父亲', '5', 1000]
    >>> list1.insert(11, 10000)

     

    >>> a
    [12, 11, 23, 45, 619000.0]
    >>> b
    [2.0, [1, 'hello'], 13]
    >>> a[2] = [23]  ###等号右边是一个列表,原列表中的该元素被替换成一个列表
    >>> a
    [12, 11, [23], 45, 619000.0]
    >>> a[2] = 3.14  ###等号右边是一个数字,替换之后依旧是数字
    >>> a
    [12, 11, 3.14, 45, 619000.0]
    >>> b[1][1] ###用两个分号访问和更新列表中列表的元素
    'hello'
    >>> b[1][1] = 'world'  ###元素依旧是字符串
    >>> b
    [2.0, [1, 'world'], 13]
    >>> b[1][1] = [2, 'nihao'] ###元素替换成列表
    >>> b
    [2.0, [1, [2, 'nihao']], 13]

    以上这两种操作都是单个元素插入,当我们需要将大量数据放在列表末尾的时候,我们就需要extend()方法了

    >>> list1
    [23, 3.14, 2, '5']
    >>> list1.extend(['邓艾', 9999])
    >>> list1
    [23, 3.14, 2, '5', '邓艾', 9999]

    >>> list1.extend(10)
    Traceback (most recent call last):
    File "<pyshell#87>", line 1, in <module>
    list1.extend(10)
    TypeError: 'int' object is not iterable


    >>> list1[2:4]
    [3.14, 50]
    >>> list1[4] = 100
    >>> list1
    [1, 'nihao', 3.14, 50, 100, 2]
    >>> len(list1)
    6
    >>> list1[6] =
    KeyboardInterrupt
    >>> list1[6] = '小甲鱼'
    Traceback (most recent call last):
    File "<pyshell#41>", line 1, in <module>
    list1[6] = '小甲鱼'
    IndexError: list assignment index out of range

    删除列表中的元素的方法:

    >>> list1
    [23, 'nihao', 3.14, 2, '父亲', '5']
    >>> del list1[1]  #知道位置,不知道内容,用del
    >>> list1
    [23, 3.14, 2, '父亲', '5']
    >>> list1.remove('父亲')  #知道内容,但是不知道位置,用remove()方法
    >>> list1
    [23, 3.14, 2, '5']

    >>> member
    ['a', 'ATG', 3.14, 500]
    >>> member.pop(0) #pop()方法也可用来删除元素,默认取出最后一个元素并返回。加上参数(即列表索引值)时,取出对应元素。
    'a'
    >>> member
    ['ATG', 3.14, 500]
    >>> member.pop()
    500
    >>> member
    ['ATG', 3.14]
    >>> list2 = member.pop()

    >>> list2
    3.14

    >>> member
    ['ATG']

     字符串可以用‘+’拼接,用‘*’进行复制若干次。列表同样也可以。

    >>> list1 = [123, 345]
    >>> list2 = [234, 456]
    >>> list3 = list1 + list2
    >>> list3
    [123, 345, 234, 456]
    >>> list3 *= 3
    >>> list3
    [123, 345, 234, 456, 123, 345, 234, 456, 123, 345, 234, 456]
    >>> list4 = list2 * 2
    >>> list4
    [234, 456, 234, 456]
     
    列表中可以包罗万象,甚至是列表。那么对于列表中的列表中的元素,其成员关系如何呢?

    >>> list5 = [11, [23,34]]
    >>> 23 in list5
    False
    >>> [23, 34] in list5 ##in 和 not in只能判断一个层次的成员关系。
    True

    >>> 34 in list5[1]
    True

     访问列表中列表中的值,应该如何访问:用两个方括号

    >>> list5[1][1]
    34
    list.index()返回元素的索引值;list.sort()按大小顺序排列列表list.reverse()反向排序;list.count()计算列表中制定元素出现的次数。要拷贝列表,使用分片的方式

    >>> listA = list3[:]
    >>> listA
    [456, 456, 456, 345, 345, 345, 234, 234, 234, 123, 123, 123]
    >>> list3.sort()
    >>> list3
    [123, 123, 123, 234, 234, 234, 345, 345, 345, 456, 456, 456]
    >>> listA
    [456, 456, 456, 345, 345, 345, 234, 234, 234, 123, 123, 123]

    元组:跟列表一样,元组也可以向字符串那样使用'+','*',也可以切片和利用索引值访问元组。
    >>> Tuple = ('robots', 77, 99,9, "try")
    >>> Tuple
    ('robots', 77, 99, 9, 'try')
    >>> len(Tuple)
    5
    >>> Tuple[4:]
    ('try',)
    >>> Tuple[:4]
    ('robots', 77, 99, 9)

    >>> Tuple[1]

    77
    >>> Tuple[1] = 4
    Traceback (most recent call last):
    File "<pyshell#47>", line 1, in <module>
    Tuple[1] = 4
    TypeError: 'tuple' object does not support item assignment
    >>> Tuple.append(2)
    Traceback (most recent call last):
    File "<pyshell#48>", line 1, in <module>
    Tuple.append(2)
    AttributeError: 'tuple' object has no attribute 'append'

    利用切片将元组切片之后,然后加上新的元素,间接更新一个元组或者利用切片间接删除一个元素。

    >>> tuple4
    ('小甲鱼', 'nihao', 10, '一刀', 1, 'China', 3.14)
    >>> tuple5 = tuple4[:3] + ('戈多',) + tuple4[3:]  ##这里('戈多',)的逗号和括号都不能少
    >>> tuple5
    ('小甲鱼', 'nihao', 10, '戈多', '一刀', 1, 'China', 3.14)
    >>> tuple6 = tuple4[:2] + tuple4[4:]
    >>> tuple6
    ('小甲鱼', 'nihao', 1, 'China', 3.14)

    当创建的元组中只有一个元素时,要在这个元素后面加上',',以确保它是一个元组。

    >>> tuple1 = (9)
    >>> type(tuple1)
    <class 'int'>
    >>> tuple1 = (9,) ##可以看出元组的关键符号是',',而不是小括号。但是列表的关键就是中括号
    >>> type(tuple1)
    <class 'tuple'>
    >>> tuple1 = 1, 2, 3
    >>> type(tuple1)
    <class 'tuple'>

    连接操作符、重复操作符、成员关系操作符、逻辑操作符都可以用在元组和列表上。

  • 相关阅读:
    rails 给类添加属性
    workflow engine Ruote初体验之二(通用属性)
    workflow engine Ruote初体验之一(概念)
    workflow engine Ruote 安装
    文字编码
    C# 制作Windows服务安装包
    Ruby on rails初体验(三)
    18-语言入门-18-鸡兔同笼
    17-语言入门-17-笨小熊
    16-语言入门-16-谁获得了最高奖学金
  • 原文地址:https://www.cnblogs.com/SWTwanzhu/p/6086243.html
Copyright © 2020-2023  润新知