Python 3
开篇
Python 基础教程 | 菜鸟教程 (runoob.com)学习笔记及扩充
简介
Python是一个高层次的结合了解释性,编译性,互动性和面向对象的脚本语言.
Python常用文件扩展名为.py
Pyton 具有很强的可读性,相比其它语言经常使用英文关键字,其他语言的一些标点符号,它具有比其它语言更具有特色语法结构.
-
Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言.像Perl语言一样,Python源代码同样遵循GPL协议
-
Python 是交互式语言:这意味着您可以在一个Python提示符>>>后直接执行代码.
-
Python 是面向对象语言:这意味着PYthon支持面向对象的风格或代码封装在对象编程技术.
-
Python 是初学者的语言
特点
-
易于学习:Python有较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单.
-
易于阅读
-
易于维护
-
一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好
-
互动模式:您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片段.
-
可移植:基于其开放源代码的特性,Python已经被移植到许多平台.
-
可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用.
-
数据库:Python提供所有主要的商业数据库的接口.
-
GUI编程:Python支持GUI可以创建和移植到许多系统调用.
-
可嵌入:你可以将Python 嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力.
Python3基本语法
编码
默认情况下,Python3源码文件以UTF-编码,所有字符串都是unicode字符串.
# -*- coding: cp-1252 -*-
上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白俄罗斯语、马其顿语、俄语、塞尔维亚语。
标识符
-
第一个字符必须是字母表中字母或下划线_.
-
标识符的其他部分由字母,数字,下划线组成.
-
标识符对大小写敏感.
在Python3中,可以用中文作为变量名,非ASCII标识符也允许啦.
保留字
保留字即关键字,不能用作标识符名称哦.Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:
>>>import keyword >>>keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释
-
#单行注释
-
'''
多行注释
第二行
第三行
'''
-
"""
多行注释
第二行
第三行
"""
行与缩进
Python 使用缩进来表示代码块<不需要{}.
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数.
多行语句
Python通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠\来实现多行语句
Number 类型
-
int整数:只有一种整数类型int,没有Python2中的long
-
bool布尔:如True
-
float浮点数:如1.23,3E-2
-
complex复数,如1+2j
字符串(String)
-
Python中单引号 ' 和双引号 " 使用完全相同
-
使用三引号 ''' 或 """可以指定一个多行字符串
-
转义符\
-
反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义.如r"this is a line with \n"则 \n 会显示,但不是换行
-
按字面意义级联字符串,"this""is""string"会自动转换成this is string.
-
字符串可以用 + 运算符连接在一起,用 * 运算符重复.
-
Python 中的字符串有两种索引方式,从左往右以0开始,从右往左以 -1 开始.
-
Python 中的字符串不能改变
-
Python没有单独的字符类型,一个字符就是长度为1的字符串.
-
字符串切片str[start:end],左闭右开
-
字符串的切片可以加上步长参数step
str[start:end:step]
空行
函数之间或类的方法之间用空格分隔,表示一段新的代码的开始.类和函数入口之间也用一行空行分隔,以突出函数入口的开始.
空行与代码缩进不同,空行并不是Python语法的一部分.书写时不插入空行,Python解释器运行也不会出错.但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护和重构.
记住:空行也是代码的一部分
-
-
等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
input()
同一行显示多条语句
Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分隔
print输出
print默认输出是换行的,如果要实现不换行需要在末尾加上 end=''
a='青山' print('a的字符串是:%s'%(a))
b=-123.2 print(b) print('b的带符号整数是:%d'%(b)) print('b的浮点数是:%.2f'%(b)) print('b的科学计数法:%e'%(b)) print('b的科学计数法:%E'%(b))
c=123.3 print('c的带符号整数是:%d'%(c)) print('c的无符号整数输出:%u'%(c))
d='青' print('字符的%c'%(d))
e=0b110 1print(e) f=0o77 print(f) g=0xd23 print(g)
h=123 print('h的八进制整数是:%o'%(h)) print('h的十六进制整数是:%x'%(h)) print('h的十六进制整数是:%X'%(h))
i=-1.234000E+02 print('i的简写是:%G'%(i))
j=1.2300000000 print('j的简写是:%G'%(j))
import与 from...import
用import 或者 from...import 来导入相应的模块.
大模块
大模块小函数
大模块小函数小函数小函数
导入某模块中所有函数:
大模块
Python3 基本数据类型
Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.
在Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型.
多个变量赋值
创建一个整形对象,值为1,从后向前赋值,三个变量被赋予相同的数值.
a=b=c=1
多个对象赋予多个值
a,b,c = 1,2,"beautiful"
标准数据库类型
-
Number (数字) =>不可变数据
-
String (字符串) =>不可变数据
-
bool (布尔类型)
-
List (列表) =>可变数据
-
Tupel (元组) =>不可变数据
-
Set (集合) =>可变数据
-
Dictionary (字典) =>可变数据
Number(数字)
int,float,bool,complex
可以用type(),isinstance()来判断对象类型
-
type()不会认为子类是一种父亲类型
-
isinstance()会认为子类是一种父亲类型()
数值运算
+
-
*
/ 得到一个浮点数
// 得到一个整数
%
**
在混合计算时,Python会把整形转换成浮点数.
String(字符串)
字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符.
如果不想 \ 发生转义,可以在字符串前面添加 r
变量头下标尾下标
索引值以0为开始值,-1为末尾的开始位置
-
+是字符串的连接符, * 是复制当前字符串,与之结合的数字为复制的次数
bool(布尔类型)
True False
List(列表)
List(列表)是Python中使用最频繁的数据类型.
列表是写在方括号 [ ] 之间,用逗号分隔开的元素列表
列表截取:
变量头下标尾下标
Step=-1 列表反转
索引值以0为开始值,-1为从末尾开始的位置
+是连接符, * 是重复操作
与字符串不同,列表元素可变
Tuple(元组)
与列表类似,不同之处在于:元组的元素不可修改.元组写在小括号 () 里,元素之间用逗号隔开
可以把字符串看作是一种特殊的元组
tup1 = () #空元组 tup2 = (20,) #一个元素,需要在元素后添加逗号
必须加逗号
string,list,tuple 都属于 sequence
元组元素不可修改,也可以使用 + 进行拼接
Set(集合)
无序,可变,用于存储唯一的元素
集合中的元素不会重复,并且可以进行交集,并集,差集等常见的操作.
{ }表示,用 , 隔开
set()函数创建集合,创建一个空集合必须用set(),而不是{},因为{}是用来创建一个空字典.
创建格式
parame = {value01,value02,...} 或者 set(value)
Dictionary(字典)
字典是无序的对象集合,字典中的元素是通过键来存取的,而不是通过偏移存取.
字典是一种一种映射类型,字典用 { } 标识,它是一个无序的键(key):值(value)的 集合.
键(key)必须使用不可变类型
在同一个字典中,key必须是唯一的
bytes 类型
bytes表示的是不可变的二进制序列(byte sequence)
bytes类型中的元素是整数值(0到255之间的整数),而不是Unicode字符
创建bytes对象的方式有很多,最常见的就是b前缀
x=b"hello"
此外,也可以使用bytes()函数将其他类型的对象转换为bytes类型.bytes()函数的第一个参数是要抓换的对象,第二个参数是编码方式,如果省略第二个参数,则默认使用UTF-8编码:
x=bytes("hello",encoding="utf-8")
Python数据类型转换
-
隐式类型转换
我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。
-
显式类型转换
我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。
int() 强制转换为整型:
x = int(1) # x 输出结果为 1 y = int(2.8) # y 输出结果为 2 z = int("3") # z 输出结果为 3
float() 强制转换为浮点型:
x = float(1) # x 输出结果为 1.0 y = float(2.8) # y 输出结果为 2.8 z = float("3") # z 输出结果为 3.0 w = float("4.2") # w 输出结果为 4.2
str() 强制转换为字符串类型:
x = str("s1") # x 输出结果为 's1' y = str(2) # y 输出结果为 '2' z = str(3.0) # z 输出结果为 '3.0'
转换函数
函数 | 描述 |
---|---|
int(x,[,base]) | 将x转换为一个整数 |
float(x) | 将x转换成一个浮点数 |
complex(real[,imag]) | 创建一个复数 |
str(x) | 将对象x转换为字符串 |
repr(x) | 将对象x转换为表达式字符串 |
eval(str) | 用来计算在字符串中有效Python表达式,并返回一个对象 |
tuple(s) | 将序列s转换为一个元组 |
list(s) | 将序列s转换为一个列表 |
set(s) | 转换为可变集合 |
dixt(d) | 创建一个字典.d必须是一个(key,value)元组序列 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 讲一个字符转换为它的整数值 |
hex(x) | 将一个整数转换成为一个十六进制字符串 |
oct(x) | 将一个整数转换成为一个八进制字符串 |
Python注释
单行注释
#注释
多行注释
-
单引号
''' 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用三个单引号 '''
-
双引号
""" 这是多行注释(字符串),用三个双引号 这是多行注释(字符串),用三个双引号 这是多行注释(字符串),用三个双引号 """
注意:在 Python 中,多行注释是由三个单引号 ''' 或三个双引号 """ 来定义的,而且这种注释方式并不能嵌套使用。
当你开始一个多行注释块时,Python 会一直将后续的行都当作注释,直到遇到另一组三个单引号或三个双引号。
嵌套多行注释会导致语法错误。
Python3运算符
位运算符
-
&
-
| 或
-
^ 异或
-
~ 非
-
<< 左移
-
'>>' 右移
逻辑运算符
-
and
-
or
-
not
成员运算符
-
in
-
not in
身份运算符
-
is
-
is not
运算符优先级
-
( )
-
读取,切片,调用,属性引用
-
await x 表达式
-
**
-
正负,按位非~
-
乘,矩阵乘,除,整除,取余
-
加减
-
移位
-
&
-
^
-
|
-
比较运算
-
not
-
and
-
or
-
if–else
-
lambda
-
:=
Python3 Number
math函数
函数 | 返回值(描述) |
---|---|
abs(x) | 绝对值 |
ceil(x) | 向上取整 |
exp(x) | e^x |
fabs(x) | 浮点数形式绝对值 |
floor(x) | 向下取整 |
log(x) | |
log10(x) | |
max(x1,x2,x3…) | |
min(x1,x2,x3…) | |
modf(x) | 返回x的整数部分(浮点型)和小数部分 |
pow(x,y) | x**y |
round(x[,n]) | 浮点数x的四舍五入值,小数点后保留n位 |
sqrt(x) | x的平方根 |
random函数
函数 | 描述 |
---|---|
choice(seq) | 从sequence元素中随机挑选一个 |
randrange([start,]stop[,step]) | 在指定范围内,按step递增的集合中随机挑选,step默认为1 |
random() | 在[0,1)范围内随机挑选一个实数 |
seed([x]) | 改变随机数生成器的种子seed |
shuffle(lst) | 将sequence的所有元素随机排序 |
uniform(x,y) | 在[x,y]范围内随机生成一个实数 |
三角函数
-
acos(x) 返回x的反余弦弧度值
-
asin(x) 返回x的反正先弧度值
-
atan(x) 返回x的反正切弧度制
-
atan2(y,x) 返回给定的 X 及 Y 坐标值的反正切值。
-
cos(x) 返回x的弧度的余弦值
-
hypot(x,y) 返回欧几里得范数 sqrt(xx+yy)
-
sin(x) 返回x弧度的正弦值
-
tan(x) 返回x弧度的正切值
-
degrees(x) 将弧度转换为角度
-
radians(x) 将角度转换为弧度
math常量
-
pi 数学常量pi (圆周率,一般以Π来表示)
-
e 数学常量e,自然常数
Python string
字符串是Python 中最常见的数据类型,我们可以使用引号('或")来创建字符串.
访问字符串中的值
变量[头下标:尾下标]
字符串更新
可以与其他字段拼接
转义字符
转义字符 | 描述 |
---|---|
\(在行尾) | 续航符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspqce) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车,\r后边的内容替换字符串开头,替换完剩下的留着 |
\f | 换页 |
\yyy | 八进制数 |
\xyyy | 十六进制数 |
\other | 其他的字符以普通格式输出 |
字符串运算符
-
字符串连接 +
-
重复输出字符串*
-
通过索引获取字符串[]
-
左闭右开截取字符串[:]
-
in
-
not in
-
r/R 原始字符串
-
% 格式字符串
字符串格式化
符号 | 描述 |
---|---|
%c | 字符及ASCII码 |
%s | 字符串 |
%d | 整数 |
%u | 无符号整型 |
%o | 无符号八进制数 |
%x | 无符号十六进制数 |
%X | 无符号十六进制数(大写) |
%f | 浮点数,可精确小数点后精度 |
%e | 科学计数法格式化浮点数 |
%E | %f和%e的简写 |
%g | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 左对齐 |
+ | 正数显示符号 |
<sp> | 正数前显示空格 |
# | 在八进制前显示0,十六进制前0x或者0X |
0 | 显示的数字前填充0 |
% | %% 输出一个单一的% |
(var) | 映射变量 |
m.n. | m是最小总宽度,n是小数点后的位数 |
三引号
允许一个字符串跨多行
f-string
字面量格式化字符串
>>> x = 1 >>> print(f'{x+1}') # Python 3.6 2 >>> x = 1 >>> print(f'{x+1=}') # Python 3.8 x+1=2
Unicode字符串
所有的字符串都是Unicode字符串
字符串内建函数
序号 | 方法及描述 |
---|---|
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)) 检查字符串是否以 suffix 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 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]) 把 将字符串中的 old 替换成 new,如果 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)) 以 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="") 根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | upper() 转换字符串中的小写字母为大写 |
39 | zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false |
列表
访问列表
索引从头开始,0开始
索引从屁股开始,-1开始
更新列表
可以对列表的数据项进行修改或更新,你也可以使用 append() 方法来添加列表项
删除列表元素
del list[i]
列表脚本操作符
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, end=" ") | 1 2 3 | 迭代 |
列表的截取与拼接
PYTHON 表达式 | 结果 | 描述 |
---|---|---|
L[2] | 'Taobao' | 读取第三个元素 |
L[-2] | 'Runoob' | 从右侧开始读取倒数第二个元素: count from the right |
L[1:] | ['Runoob', 'Taobao'] | 输出从第二个元素开始后的所有元素 |
嵌套列表
>>> a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b'
列表比较
from operator import eq
eq(list1,list2)
True/False
列表函数
序号 | 函数 |
---|---|
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
方法
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | [list.pop(index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
列表推导式
列表推导格式为:
list1=['c','m','miracle','chen'] list2=[list3.upper()for list3 in list1 if len(list3)<2 ] print(list2)
元组
Python的元组与列表类似,不同之处在于元组的元素不能修改.
元组使用小括号(),列表使用方括号[]
元组创建:
创建空元组
元组中只有一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
>>> tup1 = (50) >>> type(tup1) # 不加逗号,类型为整型 <class 'int'> >>> tup1 = (50,) >>> type(tup1) # 加上逗号,类型为元组 <class 'tuple'>
访问元组
索引
修改元组
元组中的元素是不允许被修改的,但我们可以对元素进行连接组合
删除元组
元组中的元素是不允许删除的,但我们可以使用del语句删除整个元组.
元组运算符
PYTHON 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
>>> a = (1, 2, 3) >>> b = (4, 5, 6) >>> c = a+b >>> c (1, 2, 3, 4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接,c 就是一个新的元组,它包含了 a 和 b 中的所有元素。 |
>>> a = (1, 2, 3) >>> b = (4, 5, 6) >>> a += b >>> a (1, 2, 3, 4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接,a 就变成了一个新的元组,它包含了 a 和 b 中的所有元素。 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x, end=" ") | 1 2 3 | 迭代 |
元组内值函数
-
len(tuple) 计算元组元素个数
-
max(tuple)返回元组中元素最大数
-
min(tuple)返回元组中元素最小值
-
tuple(iteable) 将可迭代系列转换为元组
元组推导式(生成器表达式)
tuple1=(a for a in range(1,10)) print(tuple1)#返回生成器对象 print(tuple(tuple1))#使用tuple()函数,可以直接将生成器对象转换成元组
字典
可变,可储存任意类型对象
每个键值对用冒号分隔,每队之间用逗号分隔,整个字典括在花括号{ }中
d = {key:value1,key2:value2,key3:value3}
键必须是唯一的,值不必
值可以是任何数据类型,但键必须是不可变的,如字符串,数字
创建空字典
empytDict={}
emptyDict=dict()
访问字典里的值
dict_name[key]
修改字典
修改或是添加
dict_name[key]=value
删除字典元素
del dict_name[key] #删除键key dict_name.clear #清空dict del tinydict #删除字典
字典内置函数&方法
序号 | 函数及描述 | 实例 |
---|---|---|
1 | len(dict) 计算字典元素个数,即键的总数。 | >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(tinydict) 3 |
2 | str(dict) 输出字典,可以打印的字符串表示。 | >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(tinydict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" |
3 | type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 | >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(tinydict) <class 'dict'> |
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | dict.clear() 删除字典内所有元素 |
2 | dict.copy() 返回一个字典的浅复制 |
3 | dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | dict.items() 以列表返回一个视图对象 |
7 | dict.keys() 返回一个视图对象 |
8 | dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | dict.values() 返回一个视图对象 |
11 | [pop(key,default]) 删除字典 key(键)所对应的值,返回被删除的值。 |
12 | popitem() 返回并删除字典中的最后一对键和值。 |
字典推导式
list1=['c','m','miracle','chen'] dict1={key:len(key) for key in list1} print(dict1)
集合
Set是一个无序的不重复元素序列
集合中的元素不会重复,并且可以进行交集,并集,查缉等常见的集合操作.
可以使用大括号{ }创建集合,元素之间用逗号隔开,或者使用set()创建集合
parame = {value01,value02,...} 或者 set(value)
set1={1,2,3,4} #直接使用大括号创建集合 set2=set([4,5,6,7])#使用set()函数从列表中创建集合
注意:创建一个空集必须用set()而不是{ },因为{ }是用来创建一个空字典.
添加元素
set_name.add(x) #将元素x添加到集合中,如果元素已经存在,则不进行任何操作.
set_name.update(x)#x可以有多个,用逗号隔开
移除元素
set_name.remove(x)#将元素x从集合中移除,如果元素不存在,则会发生错误
set_name.discard(x)#移除元素,如果元素不存在,不发生错误
set_name.pop() #非常大胆,随机删除一个元素
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素
计算集合元素个数
len(set_name)
清空集合
set_name.clear()
判断元素是否在集合中存在
x in set_name
集合内置方法完整列表
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素个数 |
集合推导式
set1={i**3 for i in range(2,10,2)}print(set1)
条件控制
if elif else
循环语句
while
while (condition): statements......
python中没有do while 循环
for
python中for 可以遍历任何可迭代对象,如一个列表或者一个字符串
for veiable in sequence: statements else: statements
for else
for item in iterable: ... else: ...
range
for i in range(7): print(i)
for i in range(3,7): print(i)
for i in range(1,7,2): print(i)
for i in range(7,1,-3): print(i)
break
跳出循环体
continue
跳出本次循环剩余语句