列表是有序的元素集合,元素的数据类型可以不一样,元素本身也可以是列表。
列表的标志是[ ],如
#list
list1 = ['a', 'b', 5]
list2 = [list1, 'abc', 3]
创建列表
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
可以用list1 = list(range(1,11));[1x1, 2x2, 3x3, ..., 10x10]可以用
list1 = [x*x for x in range(1,11)];(可以加循环)[2x2, 4x4, ..., 10x10]可以用
list1 = [x*x for x in range(1,11) if x % 2 == 0];(可以加if进行筛选)统计元素个数
L = len(list1) #统计列表中元素的个数
索引列表中的元素
向列表中插入元素
从列表中删除元素
列表的拷贝
https://blog.csdn.net/a6225301/article/details/48833125
定义lista = [2,[4,5]] #在内存中创建了一个[2,[4,5]]的列表,在内存中创建了一个名为lista的变量,并让lista指向[2,[4,5]
lista=listb 是重命名而不是拷贝!!!创建了b,指向a所指向的列表,b的内容和a的内容完全一样,后续对b进行修改a也会同步
真正的列表的拷贝有以下5种方式:
1.listb = lista[:] #切片赋给新变量相当于浅拷贝
2.listb = list(lista)
3.listb = [i for i in lista]
4.import copy; listb = copy.copy(lista) #浅拷贝,内部的不可变元素被拷贝,可变元素如list拷贝的只是地址,和原始list相同
5.import copy; listb = copy.deepcopy(lista) #深拷贝,是真正意义上的拷贝,二者完全不同了
每种拷贝方式后续跟两步操作:
listb[1].append(9)
print(lista, listb)
五种拷贝方式后续操作的结果分别是:
1. [2, [4, 5, 9]] [2, [4, 5, 9]]
2. [2, [4, 5, 9]] [2, [4, 5, 9]]
3. [2, [4, 5, 9]] [2, [4, 5, 9]]
4. [2, [4, 5, 9]] [2, [4, 5, 9]]
5. [2, [4, 5]] [2, [4, 5, 9]]
(函数是指函数(list),方法是指list.方法)
需要注意的几个函数包括:len(list)列表元素个数,cmp(list1, list2)比较两个列表的元素,max(list)返回列表元素最大值,min(list)返回列表元素最小值。
直接敲help([])可以查看列表的所有方法,其中需要注意的几个方法包括:
| clear(...)
| L.clear() -> None -- remove all items from L
|
| copy(...)
| L.copy() -> list -- a shallow copy of L
|
| count(...)
| L.count(value) -> integer -- return number of occurrences of value 返回元素在列表中出现的次数
|
| index(...)
| L.index(value, [start, [stop]]) -> integer -- return first index of value. 从列表中找出某个值第一个匹配项的索引位置
| Raises ValueError if the value is not present.
|
| reverse(...)
| L.reverse() -- reverse *IN PLACE*
|
| sort(...)
| L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* . reverse=False(默认)ASCII升序,reverse=True降序
tuple和list非常类似,但是tuple是不可变的,一旦初始化就不能修改,所以更安全。
元组的标志是( ),如
#tuple
classmates = ('Michael', 'Bob', 'Tracy', 2)
创建元组
统计元素个数
L = len(tuple1) #统计元组中元素的个数
索引元组中的元素
与列表的索引方式相同,但是列表被索引出来的元素可以重新赋值,而元组不可以。另外,不允许向元组中插入元素,也不允许从元组中删除元素。
元组不可变性的进一步解释
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。元组中如果有list元素的话,这个list是可以变的:
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print(t)
('a', 'b', ['X', 'Y'])
'
或双引号"
括起来的任意文本,比如'abc'
,"xyz"
等等。其中''
或""
本身只是一种表示方式,不是字符串的一部分。\n
表示换行,\t
表示制表符,\\
表示\,\'表示',\"表示"等。
如果不想要转义,用在字符串引号之前加上r,如r'text1'或r'''line1...line2...line3'''。
有多行换行的字符串可以用'''line1...line2...line3'''
的格式来替代\n(注意这里的...和交互式时的...不一样)
。字符编码就是指将文本形式的字符变成计算机可以进行处理和存储的数字的形式。
由于计算机中的数字是以二进制存储的,二进制只有0和1两个数字,没有办法表示这么多的字符,所以通过多个二进制数字的组合来表示字符。根据每种语言字符数量的多少,不同的国家有自己的字符编码,如:
语言 | 字符编码方式 | 字符编码的比特数 | 所能表示的最大整数 | 编码的字符数 |
---|---|---|---|---|
英文 | ASCII | 8比特(1字节) | 255 | 127 |
中文 | GB2312 | 16比特(2字节) | 65535 | |
日文 | Shift_JIS | |||
韩文 | Euc-kr |
但当一个文本中含有多种语言时,每种语言对应自己的字符编码这种方式就会导致编码混乱,因此有了各语言统一的编码方式:
Unicode和UTF-8编码的关系是:在内存中,统一使用Unicode编码;当保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
来自http://www.runoob.com/python3/python3-string.html
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
对字符串的操作不要忘记re模块里的正则表达式的一些办法,包括字符串的正则匹配、字符串切分(变成规则的list)、字符串的分组(子串提取)、字符串的非贪婪匹配(与正则表达式是贪婪匹配相对)等。