由于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遍历整个列表,步长为负数表示反向遍历
列表与常用操作符配合
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的垃圾回收机制会在某个对象不再被使用的时候自动进行处理。