关键词搜索

源码搜索 ×
×

Python学习:列表和元组

发布2019-01-02浏览609次

详情内容

Python 中有一种名为容器的数据结构。
容器基本上是包含其他对象的任意对象。
序列(例如列表和元祖)和映射(例如字典)是两类主要的容器。
序列中的每个元素都有自己的编号,而映射中的每个原色则有一个名字(也称为键)
两种相同类型的序列才能进行连接操作

a = [1,2,3,4]
b = "Hello"
c = "Jack"

a + b
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

b + c
'HelloJack'

    一、 列表

    1. 创建列表
    test = []	#可以是空列表
    test = [1,'a','汉字',[2,3,4]]	#也可是混杂列表
    
    • 1
    • 2
    1. 向列表中添加元素
    number = [1,2,3]
    #末尾添加一个元素
    number.append(4)
    #末尾添加多个元素
    number.extend([5,6])
    #指定位置添加元素
    number.insert(0,0)
    number = [0,1,2,3,4,5,6]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 从列表中获取元素
    #通过元素的索引值(index)
    number[3]
    
    • 1
    • 2
    1. 从列表中删除元素
    #number = ['小明’,1,2,3,4,5]
    #remove 按照元素名字删除
    number.remove(‘小明’)
    #del 是一个语句,按索引值删除元素,还可以删除整个列表如:del number
    del number[1]
    # 按索引值从列表中取出元素并返回,pop()默认弹出最后一个元素
    number.pop(2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 列表分片
    # number = ['小明',1,2,3,'小寒']
    #使用冒号隔开两个索引值,左边是开始位置,右边是结束位置(结束位置上的元素不包括)
    number[:2]
    # ['小明', 1]
    # 还可以接受第三个参数,表示步长,默认为1
    number[1:4:2]
    # [1, 3]
    # 步长设置为-1,相当于复制一个翻转的列表
    number[::-1]
    # ['小寒', 3, 2, 1, '小明']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 常用操作符
    list1 = [1,2,3]
    list2 =list1 *2
    #list2 = [1, 2, 3, 1, 2, 3]
    list3 = list1 + list2
    # list3 = [1, 2, 3, 1, 2, 3, 1, 2, 3]
    list4 = [1,2,3,'list4',[4,5]]
    'list4' in list4
    # True
    # in 和 not in 只能判断一个层次的成员关系  
    4 in list4
    # False
    list4[4][1]			#访问二维数组方法
    # 5
    
      13
    1. 其他方法
    # number = [1,2,3,4,2,3,1]
    number.count(2)	#统计元素在列表中出现的个数
    number.index(2)	#返回元素在列表中的位置,默认返回第一次出现的位置
    # 返回第二次出现的位置的方法
    start = number.index(2) + 1
    stop = len(number)
    number.index(2,start,stop)	# 返回元素2,在start 和stop区间内的第一次出现的位置
    number.reverse()	# 将整个列表翻转
    # number = [1, 3, 2, 4, 3, 2, 1]
    number.sort()	# 对列表进行排序,默认由小到大
    # number = [1, 1, 2, 2, 3, 3, 4]
    # 利用sort进行由大到小进行排序
    number.sort(reverse = True)
    # number = [4, 3, 3, 2, 2, 1, 1]
    
      13
    • 14
    1. 分片‘拷贝’概念

    使用索引来访问单个元素,分片操作用来访问一定范围内的元素

    分片操作提供两个索引作为边界,第一个索引包含在分片内,第2 个则不包含在分片内

    a = [1,2,3,4]
    a[0:2]
    [1, 2]
    
    • 1
    • 2
    • 3
    # list1 = [4,3,2,1]
    # 真正的拷贝是要使用分片的方法
    list2 = list1[:]
    # 为一个列表 指定另一个名字的做法,只是向一个列表增加一个新的标签
    list3 = list1
    list1.sort()
    # list1 = [1, 2, 3, 4]
    # list2 = [4, 3, 2, 1]
    # list3 = [1, 2, 3, 4]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    分片赋值可以在不需要替换任何原有元素的情况下插入新的元素

    numbers = [1,5]
    numbers[1:1] = [2,3,4]
    numbers
    [1, 2, 3, 4, 5]
    
    • 1
    • 2
    • 3
    • 4

    这里“替换”了一个空的分片,因此实际的操作是插入了一个序列
    9. 序列可以通过索引获取元素,使用负数索引时,Python会从右边,也就是从最后一个元素开始计数。

    a = "Hello"
    a[0]
    'H'
    a[-1]
    'o'
    a[-2]
    'l'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、元组

    元组和列表最大的区别是,列表可以任意修改列表中的元素,但是元组不可变。创建元组大部分使用小括号。
    字符串也是不可变得

    # tuple1 = (1,2,3,4,5)
    type(tuple1)
    # <class 'tuple'>
    # 若创建的元组只有一个元素时,需要在它后边加上一个逗号
    temp = (1,)
    type(temp)
    # <class 'tuple'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、补充

    1. None、空列表和初始化
      空列表可以简单地通过两个中括号进行表示 [ ]
      None 是一个 Python 的内建值,确切含义是 “什么也没有”

    使用 None 初始化一个长度为 10 的列表

    sequence = [None] * 10
    sequence
    [None, None, None, None, None, None, None, None, None, None]
    
    • 1
    • 2
    • 3
    1. list 函数:实现创建列表的操作
    words = "Hello world !"
    list_words = list(words)
    list_words
    ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', '!']
    
    • 1
    • 2
    • 3
    • 4
    1. pop 方法和 append 方法实现入栈和出栈
      Python 没有入栈方法,但可以用 append 方法来代替。(实现后进先出)
      pop 方法和 append 方法的恰好相反
    # append 方法用于在列表末尾追加新的对象
    # pop 方法用于移除列表中的一个元素(默认是最后一个),并且返回该元素的值
    x = [1,2,3]
    x.append(4)
    x
    [1, 2, 3, 4]
    x.pop()
    4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 实现先进先出的队列

    插入可以使用 insert(m,x) 或者 append 方法
    但是必须用 pop(0) 来代替 pop()

    x = [1,2,3]
    x.append(5)
    x.insert(4,6)
    # x = [1, 2, 3, 5, 6]
    x.pop(0)
    1
    # x = [2, 3, 5, 6]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 关于 sort 方法的知识点
    x = [4,6,2,9]
    y = x.sort()
    # y = None
    # x = [2, 4, 6, 9]
    
    • 1
    • 2
    • 3
    • 4

    这里 sort 方法修改了 x ,但是 y 确返回来了空值
    正确的赋值应该是

    y = x[:]
    y.sort 
    
    • 1
    • 2

    实现根据元素的长度进行排序

    x = ['address','make','add','be']
    x.sort(key=len)
    # x = ['be', 'add', 'make', 'address']
    
    • 1
    • 2
    • 3
    1. tuple 函数
      tuple 函数的功能与 list 函数基本是一样的:以一个序列作为参数并把它转换为元祖,如果参数就是元祖,那么该参数会被原样返回
    tuple([1,2,3])
    # (1, 2, 3)
    tuple('abc')
    # ('a', 'b', 'c')
    tuple((1,2,3)) # 如果参数就是元祖,那么该参数会被原样返回
    # (1, 2, 3)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 当两个变量同时引用一个列表的时候,它们的确是同时引用一个列表,如果想让这两个列表独立,需要使用切片
      在这里插入图片描述
      在这里插入图片描述

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载