从列表到序列需要注意的问题
( 未完,仅目录)
列表
简单数据类型
容器数据类型
- 列表<class ‘list’>
- 元组<class ‘tuple’>
- 字典<class ‘dict’>
- 集合<class ‘set’>
- 字符串<class ‘str’>
列表的定义和创建
列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, …, 元素n]
- 创建一个普通列表
- 利用range()创建列表
- 利用推导式创建列表
注意:x = [a] * 4
操作中,只是创建4个指向list的引用,所以一旦a
改变,x
中4个a
也会随之改变。
- 创建一个混合列表
- 创建一个空列表
列表中元素的添加、删除、获取
`
添加:
list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在
list` 中保持着原结构类型。- 注意
append()
和extend()
的区别。 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.insert(index, obj)
在编号index
位置插入obj
。
删除:
list.remove(obj)
移除列表中某个值的第一个匹配项list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值del var1[, var2 ……]
删除单个或多个对象。- 如果从列表中删除元素,且不再以任何方式使用它,就使用del语句;如果在删除元素后还要继续使用它,就使用方法
pop()
。
获取:练习示例
例1
x = ['Monday', 'Tuesday', 'Wednesday', ['Thursday', 'Friday']]
print(x[0], type(x[0])) # Monday <class 'str'>
print(x[-1], type(x[-1])) # ['Thursday', 'Friday'] <class 'list'>
print(x[-2], type(x[-2])) # Wednesday <class 'str'>
例2
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:]) # ['Thursday', 'Friday']
print(x[-3:]) # ['Wednesday', 'Thursday', 'Friday']
例3
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3]) # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3]) # ['Monday', 'Tuesday']
例4
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3]) # ['Tuesday', 'Wednesday']
print(week[-3:-1]) # ['Wednesday', 'Thursday']
例5
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']
例6
eek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
例7 深浅拷贝
list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]
print(list2) # [123, 456, 789, 213]
print(list3) # [123, 456, 789, 213]
list1.sort()
print(list2) # [123, 213, 456, 789]
print(list3) # [123, 456, 789, 213]
list1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
print(list2) # [[123, 456], [789, 213]]
print(list3) # [[123, 456], [789, 213]]
list1[0][0] = 111
print(list2) # [[111, 456], [789, 213]]
print(list3) # [[111, 456], [789, 213]]
列表的常用操作符
- 等号操作符:
==
- 连接操作符
+
- 重复操作符
*
- 成员关系操作符
in
、not in
「等号 ==」
,只有成员、成员位置都相同时才返回True
。
列表拼接有两种方式,用「加号 +
」和「乘号 *
」,前者首尾拼接,后者复制拼接。
列表的其他方法
list.count(obj)
统计某个元素在列表中出现的次数list.index(x[, start[, end]])
从列表中找出某个值第一个匹配项的索引位置list.reverse()
反向列表中元素list.sort(key=None, reverse=False)
对原列表进行排序。
此外
key --
主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse --
排序规则,reverse = True
降序, reverse = False
升序(默认)。
该方法没有返回值,但是会对列表的对象进行排序。
元组
创建和访问、更新和删除一个元组
元组相关的操作符
内置方法
解压元组
字符串
常用转义字符:
\\
反斜杠符号
\'
单引号
\"
双引号
\n
换行
\t
横向制表符(TAB)
\r
回车