列表的创建。列表的创建主要有以下几种方式:

(1)首先是普通列表的创建:

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

(2)利用range()创建列表:

x = list(range(10))
print(x, type(x))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

(3)利用推导式创建列表

x = [i for i in range(10)]
print(x, type(x))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
x = [i for i in range(1, 10, 2)]
print(x, type(x))
# [1, 3, 5, 7, 9] 
x = [i for i in range(10, 1, -2)]
print(x, type(x))
# [10, 8, 6, 4, 2]

注:由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。

向列表中添加元素

(1)list.append(obj)在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list 中保持着原结构类型。

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append('Thursday')
print(x)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday']
print(len(x)) # 6

(2)list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday', 'Sunday']
print(len(x)) # 7

删除列表中的元素

list.remove(obj) 移除列表中某个值的第一个匹配项

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x) # ['Tuesday', 'Wednesday', 'Thursday', 'Friday']
list.pop([index=-1])`移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
y = x.pop()
print(y) # Friday
y = x.pop(0)
print(y) # Monday
y = x.pop(-2)
print(y) # Wednesday
print(x) # ['Tuesday', 'Thursday']

remove和pop都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引

如果知道要删除的元素在列表中的位置,可使用del语句,del语句是完全删除,没有返回值

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x) # ['Wednesday', 'Thursday', 'Friday']

获取列表中的元素

通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。

通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。

切片的通用写法是start : stop : step

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:]) # ['Thursday', 'Friday']
print(x[-3:]) # ['Wednesday', 'Thursday', 'Friday']
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3]) # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3]) # ['Monday', 'Tuesday']
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2]) # ['Tuesday', 'Thursday']
print(week[:4:2]) # ['Monday', 'Wednesday']
print(week[1::2]) # ['Tuesday', 'Thursday']
print(week[::-1])
# ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']

复制列表中的所有元素(浅拷贝)。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

列表常用操作符

列表拼接有两种拼接方式:+首尾拼接;*复制拼接

列表的其它方法

list.count(obj)统计某个元素在列表中出现的次数(计数)

list.index(x[, start[, end]])从列表中找出某个值第一个匹配项的索引位置

list.reverse()反向列表中元素

list.sort(key=None, reverse=False)对原列表进行排序。key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

该方法没有返回值,但是会对列表的对象进行排序。

元组

元组和列表比较相似,但不同的是元组被创建后就不能对其修改。

创建和访问一个元组

这是元组学习的第一步:元组语法定义为:定义语法为:`(元素1, 元素2, ..., 元素n)`,采用小括号将所有元素绑在一起,采用逗号将每个元素隔开。访问的话是采用整数进行索引和切片。

二维数组的建立也比较简单,直接赋值就行,如下:

x = (1, 10.31, 'python'), ('data', 11)
print(x)
# ((1, 10.31, 'python'), ('data', 11))

元素具有immutable的性质,不能直接给元组的元素赋值,但只要元组中的元素可更改,就可以直接更改其元素。

t1 = (1, 2, 3, [4, 5, 6])
print(t1) # (1, 2, 3, [4, 5, 6])
t1[3][0] = 9
print(t1) # (1, 2, 3, [9, 5, 6])

元组的内置方法就比较简单,

t = (1, 10.31, 'python')
print(t.count('python')) # 1
print(t.index(10.31)) # 1

count('python')` 是记录在元组 `t` 中该元素出现几次,显然是 1 次

`index(10.31)` 是找到该元素在元组 `t` 的索引,显然是 1

元组还有一个解压功能,那什么叫元组解压呢?

t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python

就是这样子解压的啦

如果是只想要元组中的一些元素,那么可以使用通配符加下划线【*_】

t = 1, 2, 3, 4, 5
a, b, *_ = t
print(a, b) # 1 2