Python3学习之路3--列表、元组

列表

由于python的变量没有数据类型,因此我们可以对一个列表的元素赋不同的数据类型,比如字符串、数字、甚至可以在列表中嵌套另一个列表。

  • 列表的增删改查以及切片
# Author: TQSong

empty = []  # 创建一个空列表
various = ["wnn", 123, ["good", 456]]  # 创建一个带有各种类型数据的列表
names = ["wnn", "tqs", "123", "good", "girl", "boy"]  # 创建一个列表

print(names)  # ['wnn', 'tqs', '123', 'good', 'girl', 'boy']

print(names[0], names[3]) # wnn good

names.append("456")  # 对列表进行元素追加,append只支持一个参数
print(names)  # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456']

names.extend([111, 222])  # 使用extend向末尾添加多个元素
print(names)  # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456', 111, 222]

names.pop()  # 弹出最后一个元素
names.pop()  # 再次弹出最后一个元素
print(names)  # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456']

names.insert(1, "789")  # 在位置1插入元素"789"
print(names)  # ['wnn', '789', 'tqs', '123', 'good', 'girl', 'boy', '456']

names[3] = "hello"  # 修改names[3]
print(names) # ['wnn', '789', 'tqs', 'hello', 'good', 'girl', 'boy', '456']

names.remove("789")  # 删除给定的元素,如果元素不存在会报错
print(names)  # ['wnn', 'tqs', 'hello', 'good', 'girl', 'boy', '456']

name = names.pop()  # 默认取出并删除最后一个元素,也可以加索引删除指定位置
print(name)  # "456"
print(names)  # ['wnn', 'tqs', 'hello', 'good', 'girl', 'boy']

names.pop(2)  # 默认删除最后一个元素,也可以加索引删除指定位置
print(names)  # ['wnn', 'tqs', 'good', 'girl', 'boy']

print(names[1])  # 获取位置1的元素  "tqs"

# del的用法十分广泛,它不仅使用于列表的某个元素,它也可以删除整个列表
del names[1]  # 删除names[1]
print(names)  # ['wnn', 'good', 'girl', 'boy']

print(names.index("wnn"))  # 计算索引并输出

print(names.count("wnn"))  # 计数"wnn"的个数

# 列表切片操作,冒号左边表示开始位置,右边表示结束位置,左闭右开
# 切片并不会改变列表自身的组成结构和数据,它其实是为列表创建一个新的拷贝并返回
print(names[0:3])  # 0-3,前闭后开
print(names[-1])  # 取最后一个,当索引值为负数时,列表从反向索引
print(names[-2])  # 取倒数第二个
print(names[-3])  # 取倒数第三个
print(names[-3:-1])  # 只有-3 -2,数字从小到大
print(names[-3:])  # 最后三个,冒号后面不填表示遍历到末尾
print(names[:2])  # 前面2个,冒号前面不填表示从0开始遍历
print(names[:])  # 遍历整个列表

# 列表还可以接受第三个参数==》步长
print(names[::2])  #以步长为2遍历整个列表,步长为负数表示反向遍历

切片输出结果如下:
Python3学习之路3--列表、元组_第1张图片
切片前的结果输出如下:
Python3学习之路3--列表、元组_第2张图片

  • 列表与常用操作符配合

    • 列表可以使用关系运算符(< > == !=)进行关系运算
    • 允许把多个列表通过(+)连接操作符拼接在一起,相当于extend方法的实现,但是连接操作符并不能实现添加元素的操作
    list1 = [123, 456]
    
    list2 = [111, 222]
    
    print(list1 + list2)
    

    输出结果:
    在这里插入图片描述

    • 乘号操作符(*)可以复制整个列表,表达式中的数字表示复制多少份,举例:
         list1 = [123, 456]
    
         print(list1 * 3)
    

    输出结果:
    在这里插入图片描述

元组

元组和列表最大的区别是:元组只可读,不可写,元组只可以被访问,不能被修改。列表和元组的另一个显著区别就是创建列表用的是中括号,而创建元组使用的是小括号

tuple1 = (1, 2, 3, 4, 5, 6)

print(type(tuple1))
print(tuple1)

在这里插入图片描述
访问元组的方式与列表无异,也是通过索引值访问到一个或多个(切片)元素,如果想要元组中只包含一个元素,可以在该元素后面添加一个逗号(,)来实现,并且小括号也不是决定是否是元组,逗号才是关键,小括号只是起到补充作用,举例如下:

tuple2 = (123,)

tuple3 = 123,

print(tuple2 == tuple3)

输出:
在这里插入图片描述
可以发现有没小括号并不是决定性的,再如:

print(8 * (8))

print(8 * (8,))

输出:
在这里插入图片描述

由于元组是可读的,所以在一般情况下不能进行更新和删除操作,但是可以创建另一个同名元组去代替原先的元组,使用切片来实现,比如:

tuple4 = (1, 2, 3, 4, 5, 6)
print(id(tuple4))
print(tuple4)

tuple4 = (1, 2) + tuple4[2:]
print(id(tuple4))
print(tuple4)

在这里插入图片描述

id函数表示每个变量名的一个绝对的身份值,可以看到tuple4的内容完全一样,但是其id不一样,说明只是同名覆盖了。
删除整个元组只需要del语句,但是在实际使用中并不会常见,因为python的垃圾回收机制会在某个对象不再被使用的时候自动进行处理。

你可能感兴趣的:(python)