zoukankan      html  css  js  c++  java
  • Python——数据类型之list、tuple

    本篇主要内容

    •  list初识

    •  list元素的访问

    •  list内部所有的方法

    •  tuple介绍和与list用法的比较

    我觉得Python里面用的最多的就是List了,感觉好强大。他能存各种东西。

    1、首先直观的看一下list这个数据类型

    a=[1,2.1,True,'12',[1,2]]
    for i in a:
        print(i)

    输出之后

    1
    2.1
    True
    12
    [1, 2]

     里面的for循环之前说过了,能遍历里面的所有元素。可以直观的看到,list里面可以存各种数据类型的东西。

    2、list的访问

    第一种是跟C一样,直接下标

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

    输出

    1
    5

    注意这里也是从0开始访问第一个元素。

    第二种,Python支持反向访问。

    a=[1,2,3,4,5]
    print(a[-1])#访问倒数第一个
    print(a[-2])#访问倒数第二个

    输出

    5
    4

    第三种,区间访问

    a=[1,2,3,4,5]
    print(a[0:2])#访问第1个到第2个数据。
    print(a[1:4])#访问第2个到第4个数据

    输出

    [1, 2]
    [2, 3, 4]

    这里要注意,两个数字之间是冒号,a[m:n]指的是访问从[m,n),前闭后开区间的数据。所以a[1:4]访问的是下标[1,4),也就是第2到第4个数据。(下标为4的第5个数据没有访问到)

     3、list类的方法

    (1)append:在列表最后追加元素

    a=[1,2,3,4,5]
    print(a)
    a.append(6)
    print(a)

    输出

    [1, 2, 3, 4, 5]
    [1, 2, 3, 4, 5, 6]

    (2) clear:删除所有元素

    a=[1,2,3,4,5]
    print(a)
    a.clear()
    print(a)

    输出

    [1, 2, 3, 4, 5]
    []

    (3) copy:复制得到一个一模一样的列表

    a=[1,2,3,4,5]
    b=a.copy()
    print(b)

    输出

    [1, 2, 3, 4, 5]

    这里要注意与b=a的区别。b=a只是把a的地址给b了,修改b还是等于修改a。

    注意下面两个代码的区别

    a=[1,2,3,4,5]
    print(a)#初始的a
    b=a.copy()
    b.clear()#将b清空
    print(a)#把b清空后的a
    print(b)#把b清空后的b

    输出

    [1, 2, 3, 4, 5]
    [1, 2, 3, 4, 5]
    []

    把b=a.copy改成b=a

    a=[1,2,3,4,5]
    print(a)#初始的a
    b=a
    b.clear()#将b清空
    print(a)#把b清空后的a
    print(b)#把b清空后的b

    输出

    [1, 2, 3, 4, 5]
    []
    []

    这点跟C语言一模一样。。。用的时候一定要注意。

    (4)count(self, value):统计某个值输出的次数

    a=[1,2,3,3,4,5]
    print(a.count(1))
    print(a.count(3))
    print(a.count(6))

    输出

    1
    2
    0

    当然,这里不一定是数字,

    a=['I Love You','I Love Albert','I Love YZP','I Love You']
    print(a.count('I Love You'))

    输出

    2

    (5)extend(self, iterable):在后面追加一个列表

    a=[1,2,3,4,5]
    b=[6,7,8,9]
    a.extend(b)
    print(a)

    输出

    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    (6)index(self, value, start=None, stop=None),从start与end之间查找value的索引值。默认从列表的全部查找。

    a=[1,2,3,4,5,6,7,8,9]
    print(a.index(7))
    print(a.index(7,0,7))
    print(a.index(7,0,6))

    输出

    6
    Traceback (most recent call last):
    6
      File "C:/Users/admin/PycharmProjects/temp.py", line 5, in <module>
        print(a.index(7,0,6))
    ValueError: 7 is not in list

    注意:[start,end)也是前闭后开区间。

    如果找不到会报错ValueError

    (7)insert(self, index, p_object):在索引index后插入一个值p_object

    a=[1,2,3,4,5,6,7,8,9]
    a.insert(6,7)
    print(a)

    输出

    [1, 2, 3, 4, 5, 6, 7, 7, 8, 9]

    (8)pop(self, index=None):删除索引为index的值,默认删除最后一个。

    a=[1,2,3,4,5,6,7,8,9]
    print(a)
    a.pop()
    print(a)
    a.pop(0)
    print(a)

    输出

    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8]
    [2, 3, 4, 5, 6, 7, 8]

    (9) remove(self, value):删除列表中值为value的元素

    a=[1,2,3,4,5,6,7,8,9]
    a.remove(7)
    print(a)

    输出

    [1, 2, 3, 4, 5, 6, 8, 9]

    注意,如果列表中有多个值为value的元素,它只删除第一个。

    (10)reverse(self):列表反转

    a=[1,2,3,4,5,6,7,8,9]
    a.reverse()
    print(a)

    输出

    [9, 8, 7, 6, 5, 4, 3, 2, 1]

    (11)sort(self, key=None, reverse=False):给列表排序key是表示按照某个规则排序,reverse是选择升序还是降序,默认升序。

    def Sec(a):
        return a[1]
    a=[[1,2],[4,3],[3,1]]
    a.sort(key=Sec,reverse=True)
    print(a)

    输出

    [[4, 3], [1, 2], [3, 1]]

    代表按照列表中每个元素的第二个元素降序。Sec函数就是返回第二个元素的值。

    list内部的方法就这么多了。

    第二个就是tuple(元组)

    tuple其实跟list差不多,但tuple的内部元素初始化后不能修改。(可以再重新初始化)

    a=(1,2,3,4,5)
    print(a)
    a=(6,7,8,9,0)#重新初始化元组
    print(a)
    
    a[0]=9#试图修改元组里面的元素

    输出

    (1, 2, 3, 4, 5)
    (6, 7, 8, 9, 0)

    但又报错

    Traceback (most recent call last):
      File "C:/Users/admin/PycharmProjects/temp.py", line 6, in <module>
        a[0]=9#试图修改元组里面的元素
    TypeError: 'tuple' object does not support item assignment

    谨记:元组元素初始化后不能修改

    元组的方法

    (1)  count(self, value):统计value的数目,用法跟list一样

    (2)index(self, value, start=None, stop=None),用法同list

  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/albert-yzp/p/10068395.html
Copyright © 2011-2022 走看看