一、列表
列表是有序集合,没有固定大小,能够保存任意数量任意类型的 python 对象,语法为[元素1, 元素2, ..., 元素n]
。
1、列表的创建
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
#创建一个普通列表
x = [1, 2, 3, 4, 5 ]
print(x, type(x))
# [1, 2, 3, 4, 5] <class 'list'>
#利用range()创建列表
x = list(range(5))
print(x, type(x))
# [0, 1, 2, 3, 4] <class 'list'>
#利用推导式创建列表
x = [i for i in range(50) if (i % 2) != 0 and (i % 3) == 0]
print(x, type(x))
# [3, 9, 15, 21, 27, 33, 39, 45] <class 'list'>
#创建一个二维数组
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]]
print(x, type(x))
# [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]] <class 'list'>
#创建一个混合列表
mix = [1, 'hello', 3.14, [1, 2, 3]]
print(mix, type(mix))
# [1, 'hello', 3.14, [1, 2, 3]] <class 'list'>
#创建一个空列表
empty = []
print(empty, type(empty))
# [] <class 'list'>
2、列表的访问
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符。
list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2[1:5])
'''
list1[0]: Google
list2[1:5]: [2, 3, 4, 5]
'''
3、删除列表元素
可以使用 del
语句来删除列表的的元素。
list1 = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)
'''
原始列表 : ['Google', 'Runoob', 1997, 2000]
删除第三个元素 : ['Google', 'Runoob', 2000]
'''
4、列表函数&方法
len(list) #列表元素个数
max(list) #返回列表元素最大值
min(list) #返回列表元素最小值
list(seq) #将元组转换为列表
list.append(obj) #在列表末尾添加新的对象
list.count(obj) #统计某个元素在列表中出现的次数
list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) #将对象插入列表
list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) #移除列表中某个值的第一个匹配项
list.reverse() #反向列表中元素
list.sort( key=None, reverse=False) #对原列表进行排序
list.clear() #清空列表
list.copy() #复制列表
二、元组
python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。语法为:(元素1, 元素2, ..., 元素n)
1、元组的创建与访问
t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python'
print(t1, type(t1))
# (1, 10.31, 'python') <class 'tuple'>
print(t2, type(t2))
# (1, 10.31, 'python') <class 'tuple'>
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8)
print(tuple1[1]) # 2
print(tuple1[5:]) # (6, 7, 8)
print(tuple1[:5]) # (1, 2, 3, 4, 5)
tuple2 = tuple1[:]
print(tuple2) # (1, 2, 3, 4, 5, 6, 7, 8)
#元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
x = (1)
print(type(x)) # <class 'int'>
x = (1,)
print(type(x)) # <class 'tuple'>
#创建二维元组
x = (1, 10.31, 'python'), ('data', 11)
print(x)
# ((1, 10.31, 'python'), ('data', 11))
print(x[0])
# (1, 10.31, 'python')
print(x[0][0], x[0][1], x[0][2])
# 1 10.31 python
print(x[0][0:2])
# (1, 10.31)
2、元组的修改与删除
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)
#(12, 34.56, 'abc', 'xyz')
元组中的元素值是不允许删除的,但我们可以使用del
语句来删除整个元组。
tup = ('Google', 'Runoob', 1997, 2000)
del tup
3、元组操作符
Python 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
(‘Hi!’,) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x,) | 1 2 3 | 迭代 |
t1 = (123, 456)
t2 = (456, 123)
t3 = (123, 456)
print(t1 == t2) # False
print(t1 == t3) # True
t4 = t1 + t2
print(t4) # (123, 456, 456, 123)
t5 = t3 * 3
print(t5) # (123, 456, 123, 456, 123, 456)
t3 *= 3
print(t3) # (123, 456, 123, 456, 123, 456)
print(123 in t3) # True
print(456 not in t3) # False
4、元组内置函数
序号 | 方法 | 描述 |
---|---|---|
1 | len(tuple) |
计算元组元素个数 |
2 | max(tuple) |
返回元组中元素最大值 |
3 | min(tuple) |
返回元组中元素最小值 |
4 | tuple(iterable) |
将可迭代系列转换为元组 |
5、解压元组
#解压(unpack)一维元组(有几个元素左边括号定义几个变量)
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python
#解压二维元组(按照元组里的元组结构来定义变量)
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python
#如果你只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量。
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c) # 1 2 5
print(rest) # [3, 4]
#如果你根本不在乎 rest 变量,那么就用通配符「*」加上下划线「_」。
t = 1, 2, 3, 4, 5
a, b, *_ = t
print(a, b) # 1 2
三、字符串
字符串是 python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
var1 = 'Hello World!'
var2 = "Runoob"
1、访问字符串中的值
python 不支持单字符类型,单字符在 python 中也是作为一个字符串使用。python 访问子字符串,可以使用方括号来截取字符串,如下实例:
var1 = 'Hello World!'
var2 = "Runoob"
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])
'''
var1[0]: H
var2[1:5]: unoo
'''
2、转义字符
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0。 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
3、字符串格式化
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串,用str()方法处理对象 |
%r | 格式化字符串,用rper()方法处理对象 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | 根据值的大小决定使用%f或%e |
%G | 作用同%g,根据值的大小决定使用%f或%E |
格式化操作符辅助指令:
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充’0’而不是默认的空格 |
% | ‘%%‘输出一个单一的’%’ |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
4、字符串内置函数
序号 | 方法 | 描述 |
---|---|---|
1 | capitalize() | 将字符串的第一个字符转换为大写 |
2 | center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 | count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 | bytes.decode(encoding=“utf-8”, errors=“strict”) | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 | encode(encoding=‘UTF-8’,errors=‘strict’) | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
6 | endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
7 | expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 | find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 | index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
10 | isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 | isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
12 | isdigit() | 如果字符串只包含数字则返回 True 否则返回 False… |
13 | islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 | isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 | isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
16 | istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 | isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 | join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 | len(string) | 返回字符串长度 |
20 | ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 | lower() | 转换字符串中所有大写字符为小写. |
22 | lstrip() | 截掉字符串左边的空格或指定字符。 |
23 | maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | max(str) | 返回字符串 str 中最大的字母。 |
25 | min(str) | 返回字符串 str 中最小的字母。 |
26 | replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
27 | rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
28 | rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
29 | rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 | rstrip() | 删除字符串字符串末尾的空格. |
31 | split(str="", num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 | splitlines([keepends]) | 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 | strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
35 | swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
36 | title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 | translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | upper() | 转换字符串中的小写字母为大写 |
39 | zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |