小白都能懂的Python基础

python基础

文章目录

基础语法

关键字

>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']

  
  
  • 1
  • 2

标识符

  • 第一个字符必须是字母表中字母或下划线 _
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符对大小写敏感。

多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句

total = item_one + \
        item_two + \
        item_three

  
  
  • 1
  • 2
  • 3

数据类型

python中数字有四种类型:整数、布尔型、浮点数和复数

  • int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
  • bool (布尔), 如 True。
  • float (浮点数), 如 1.23、3E-2
  • complex (复数), 如 1 + 2j、 1.1 + 2.2j

字符串

  • python中单引号和双引号使用完全相同。
  • 使用三引号(’’'或""")可以指定一个多行字符串。
  • 转义符 ‘’
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  • Python中的字符串不能改变。
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  • 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""

  
  
  • 1
  • 2
  • 3
  • 4
str='Runoob'

print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始后的所有字符
print(str[1:5:2]) # 输出从第二个开始到第五个且每隔两个的字符
print(str * 2) # 输出字符串两次
print(str + ‘你好’) # 连接字符串

print(’------------------------------’)

print(‘hello\nrunoob’) # 使用反斜杠()+n转义特殊字符
print(r’hello\nrunoob’) # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
# r 指 raw,即 raw string,会自动将反斜杠转义

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

输出结果

hello
runoob
hello\nrunoob

 
 
  • 1
  • 2
  • 3

输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

import 与from import

在 python 用 import 或者 from…import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

基本数据类型

多个变量赋值

a = b = c = 1

a, b, c = 1, 2, “runoob”

  • 1
  • 2
  • 3

标准数据类型

六个标准的数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)
  • **不可变数据(3 个):**Number(数字)、String(字符串)、Tuple(元组)
  • **可变数据(3 个):**List(列表)、Dictionary(字典)、Set(集合)
Number(数字)

Python3 支持 int、float、bool、complex(复数)

在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

像大多数语言一样,数值类型的赋值和计算都是很直观的。

内置的 type() 函数可以用来查询变量所指的对象类型。

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
  • 1
  • 2
  • 3
  • 4
# 还可以用 isinstance 来判断
>>> a = 111
>>> isinstance(a, int)
True

 
 
  • 1
  • 2
  • 3
  • 4

isinstance 和 type 的区别在于:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型。
数值运算
>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 取整,得到一个整数
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意

  • 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
  • 2、一个变量可以通过赋值指向不同类型的对象。
  • 3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
  • 4、在混合计算时,Python会把整型转换成为浮点数。

Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

数学函数
函数描述
abs(x)返回数字的绝对值,如abs(-10) 返回 10
ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换
exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1,x2,…)返回给定参数的最大值,参数可以为序列
min(x1,x2,…)返回给定参数的最小值,参数可以为序列
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x)x**y 运算后的值
round(x,n)返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端
sqrt(x)返回数字x的平方根
随机数函数
函数描述
choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange(start,stop,step)从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random()随机生成下一个实数,它在[0,1)范围内
seed(x)改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed
shuffle(lst)将序列的所有元素随机排序
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)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x)将角度转换为弧度
数学常量
常量描述
pi数学常量 pi(圆周率,一般以π来表示)
e数学常量 e,e即自然常数(自然常数)
String(字符串)

Python中的字符串用单引号 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

字符串切片

索引值以 0 为开始值,-1 为从末尾的开始位置。

变量[头下标:尾下标]

  
  
  • 1
str = 'Runoob'

print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次,也可以写成 print (2 * str)
print (str + “TEST”) # 连接字符串

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出结果

Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 另外,反斜杠 \ 可以作为续行符,表示下一行是上一行的延续。也可以使用 “”"…""" 或者 ‘’’…’’’ 跨越多行。

    注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串

    >>> word = 'Python'
    >>> print(word[0], word[5])
    P n
    >>> print(word[-1], word[-6])
    n P
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5

与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm’会导致错误

注意:

  • 1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 2、字符串可以用+运算符连接在一起,用*运算符重复。
  • 3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • 4、Python中的字符串不能改变。
转义字符
转义字符描述实例
(在行尾时)续行符>>> print(“line1 \ … line2 \ … line3”) line1 line2 line3
\ \反斜杠符号>>> print("\") \
\ ’单引号>>> print(’’’) ’
"双引号>>> print(""") "
\a响铃>>> print("\a") 执行后电脑有响声
\b退格(Backspace)>>> print(“Hello \b World!”) Hello World!
\000>>> print("\000")
\n换行>>> print("\n")
\v纵向制表符
\t回车
\f换页
\yyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
\xyy十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行
\othe其它的字符以普通格式输出
字符串运算符

实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:

运算符描述实例
+字符串连接a + b 输出结果: HelloPython
*重复输出字符串a*2 输出结果:HelloHello
[]通过索引获取字符串中字符a[1] 输出结果e
[ : ]截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的a[1:4] 输出结果 ell
in成员运算符 - 如果字符串中包含给定的字符返回 True’H’ in a 输出结果 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 True’M’ not in a 输出结果 True
r/R原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法print( r’\n’ ) print( R’\n’ )
%格式字符串

实例

a = "Hello"
b = "Python"

print(“a + b 输出结果:”, a + b)
print(“a * 2 输出结果:”, a * 2)
print(“a[1] 输出结果:”, a[1])
print(“a[1:4] 输出结果:”, a[1:4])

if( “H” in a) :
print(“H 在变量 a 中”)
else :
print(“H 不在变量 a 中”)

if( “M” not in a) :
print(“M 不在变量 a 中”)
else :
print(“M 在变量 a 中”)

print (r’\n’)
print (R’\n’)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

实例结果

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
字符串格式化字符
符号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%X格式化无符号十六进制数(大写)
%x格式化无符号十六进制数
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址
格式化操作符辅助指令
符号功能
*定义宽度或者小数点精度
-用做左对齐
+在正数前面显示加号( + )
在正数前面显示空格
#在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0显示的数字前面填充’0’而不是默认的空格
%‘%%‘输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
字符串内建函数
方法描述
capitalize()将字符串的第一个字母转换为大写
count(str,a,b)在a,b范围内str出现的次数
expandtabs(tabsize = 8)把字符串的tab字符转换为空格,tab符号默认的空格数是8
find(str,a,b)在指定范围a,b内查找,如果包含返回开始的索引值,否则就返回-1
isalbnum()如果字符串至少有一个字符串并且所有的字母或数字返回True,否则返回False
isalpha()如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
isdigit()如果字符串只包含数字则返回 True 否则返回 False…
istitle()如果字符串是标题化的(见 title())则返回 True,否则返回 False
join(sep)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
lower()转换字符串中所有大写字符为小写
upper()转换字符串中所有小写字符为大写
rfind()类似find函数,但是是从右边开始查找
max(str)返回字符串 str 中最大的字母
min(str)返回字符串 str 中最小的字母
rindex()类似index函数,从右边查找
replace(old,new,max)把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次
lstrip()、strip()、rstrip()删除空格
title()返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
swapcase()将字符串中大写转换为小写,小写转换为大写
startwith(substr,beg = 0,end = len(string))检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查
zfill(width)返回长度为 width 的字符串,原字符串右对齐,前面填充0
isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false
List(列表)

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表切片

索引值以 0 为开始值,-1 为从末尾的开始位置

变量[头下标:尾下标:截取的步长]

 
 
  • 1

如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:

def reverseWords(input): 
<span class="token comment"># 通过空格将字符串分隔符,把各个单词分隔为列表</span>
inputWords <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span> 

<span class="token comment"># 翻转字符串</span>
<span class="token comment"># 假设列表 list = [1,2,3,4],  </span>
<span class="token comment"># list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样) </span>
<span class="token comment"># inputWords[-1::-1] 有三个参数</span>
<span class="token comment"># 第一个参数 -1 表示最后一个元素</span>
<span class="token comment"># 第二个参数为空,表示移动到列表末尾</span>
<span class="token comment"># 第三个参数为步长,-1 表示逆向</span>
inputWords<span class="token operator">=</span>inputWords<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span> 

<span class="token comment"># 重新组合字符串</span>
output <span class="token operator">=</span> <span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>inputWords<span class="token punctuation">)</span> 
  
<span class="token keyword">return</span> output 

if name == main:
input = ‘I like runoob’
rw = reverseWords(input)
print(rw)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出结果

runoob like I

 
 
  • 1
基础操作
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

print (list) # 输出完整列表
print (list[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list + tinylist) # 连接列表

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出结果

['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

与Python字符串不一样的是,列表中的元素是可以改变的:

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []   # 将对应的元素值设置为 [] 
>>> a
[9, 2, 6]

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意:

  • 1、List写在方括号之间,元素用逗号隔开。
  • 2、和字符串一样,list可以被索引和切片。
  • 3、List可以使用+操作符进行拼接。
  • 4、List中的元素是可以改变的。
访问列标中的值

列标的索引是从0开始,第二个索引是1

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[0] )
print( list[1] )
print( list[2] )

 
 
  • 1
  • 2
  • 3
  • 4

结果

red
green
blue

 
 
  • 1
  • 2
  • 3

索引也可以从尾部开始,最后一个索引是-1,倒数第二个是-2

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[-1] )
print( list[-2] )
print( list[-3] )

 
 
  • 1
  • 2
  • 3
  • 4

输出结果

black
white
yellow

 
 
  • 1
  • 2
  • 3
列标更新

对列表的数据项进行修改或更新,你也可以使用 append() 方法来添加列表项,append()在列标最后添加数据

list = ['Google', 'Runoob', 1997, 2000]

print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])

  • 1
  • 2
  • 3
  • 4
  • 5
第三个元素为 :  1997
更新后的第三个元素为 :  2001

 
 
  • 1
  • 2
列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表

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迭代
列表截取与拼接
L=['Google', 'Runoob', 'Taobao']

 
 
  • 1
Python 表达式结果描述
L[2]‘Taobao’读取第三个元素
L[-2]‘Runoob’从右侧开始读取倒数第二个元素:
L[1:][‘Runoob’, ‘Taobao’]输出从第二个元素开始后的所有元素

列表还支持拼接操作

>>>squares = [1, 4, 9, 16, 25]
>>> squares += [36, 49, 64, 81, 100]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
列表嵌套
>>>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'

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
列表函数和方法

函数

函数描述
len()列表元素个数
max()返回列表元素最大值
min()返回列表元素最小值
list()将元组转换成列表

方法

方法描述
list.append()列表元素末尾添加新的元素
list.count()统计某个元素在列表中出现的次数
list.extend()在列标末尾一次性添加多个元素
list.index()从列表中找出某个值第一个匹配项的索引位置
list.insert()将对象插入列表
list.pop()移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove()移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(key = None,reverse = False)对原列表进行排序,False改为True则逆序排序
list.clear()清空列表
list.copy()复制列表
Tuple(元组)

元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号 ( ),列表使用方括号 [ ]

>>> tup1 = ('Google', 'Runoob', 1997, 2000)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup3 = "a", "b", "c", "d"   #  不需要括号也可以
>>> type(tup3)
<class 'tuple'>

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

创建空元组

tup1 = ()

 
 
  • 1
访问元组
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

  • 1
  • 2
  • 3
  • 4
  • 5

结果

tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

 
 
  • 1
  • 2
删除元素

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = ('Google', 'Runoob', 1997, 2000)

print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果

删除后的元组 tup : 
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print (tup)
NameError: name 'tup' is not defined

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

表达式结果描述
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迭代
元组切片

与列表切片相同使用方法

tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')

 
 
  • 1
表达式结果描述
tup[1]‘Runoob’读取第二个元素
tup[-2]‘Weibo’反向读取,读取倒数第二个元素
tup[1:](‘Runoob’, ‘Taobao’, ‘Wiki’, ‘Weibo’, ‘Weixin’)截取元素,从第二个开始后的所有元素
tup[1:4](‘Runoob’, ‘Taobao’, ‘Wiki’)截取元素,从第二个开始到第四个元素(索引为 3)

运行实例

>>> tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')
>>> tup[1]
'Runoob'
>>> tup[-2]
'Weibo'
>>> tup[1:]
('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
>>> tup[1:4]
('Runoob', 'Taobao', 'Wiki')
>>> 

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
元组内置函数
函数描述
len(tuple)计算元组元素个数
>>> tuple1 = ('Google', 'Runoob', 'Taobao')
>>> len(tuple1)
3

 
 
  • 1
  • 2
  • 3
函数描述
max(tuple)返回元组中元素最大值
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'

 
 
  • 1
  • 2
  • 3
函数描述
min(tuple)返回元组中元素最小值
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'

 
 
  • 1
  • 2
  • 3
函数描述
tuple(iterable)将可迭代系列转换为元组
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Runoob', 'Baidu')

 
 
  • 1
  • 2
  • 3
  • 4
关于元组是不可变的

所谓元组的不可变指的是元组所指向的内存中的内容不可变

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g'     # 不支持修改元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup)     # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800    # 内存地址不一样了

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
元组基础

元组中的元素类型也可以不相同:

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')

print (tuple) # 输出完整元组
print (tuple[0]) # 输出元组的第一个元素
print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
print (tuple[2:]) # 输出从第三个元素开始的所有元素
print (tinytuple * 2) # 输出两次元组
print (tuple + tinytuple) # 连接元组

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出结果

('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

元组不可修改

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0])
1
>>> print(tup[1:5])
(2, 3, 4, 5)
>>> tup[0] = 11  # 修改元组元素的操作是非法的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

 
 
  • 1
  • 2

string、list 和 tuple 都属于 sequence(序列)

注意:

  • 1、与字符串一样,元组的元素不能修改。
  • 2、元组也可以被索引和切片,方法一样。
  • 3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
  • 4、元组也可以使用+操作符进行拼接。
Set(集合)

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合

注意:创建一个空集合必须用 **set() 而不是 { },因为 **{ }是用来创建一个空字典。

实例

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites) # 输出集合,重复的元素被自动去掉

# 成员测试
if ‘Runoob’ in sites :
print(‘Runoob 在集合中’)
else :
print(‘Runoob 不在集合中’)

# set可以进行集合运算
a = set(‘abracadabra’)
b = set(‘alacazam’)

print(a)

print(a - b) # a 和 b 的差集

print(a | b) # a 和 b 的并集

print(a & b) # a 和 b 的交集

print(a ^ b) # a 和 b 中不同时存在的元素

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

输出结果

{'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
Runoob 在集合中
{'b', 'c', 'a', 'r', 'd'}
{'r', 'b', 'd'}
{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
{'c', 'a'}
{'z', 'b', 'm', 'r', 'l', 'd'}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
集合的基本操作
添加元素
  • 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作
s.add( x )

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}

 
 
  • 1
  • 2
  • 3
  • 4
  • 还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等
s.update( x )

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])  
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
移除元素
s.remove( x )

 
 
  • 1
  • 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook")   # 不存在会发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误
s.discard( x )

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")  # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}

 
 
  • 1
  • 2
  • 3
  • 4
  • 我们也可以设置随机删除集合中的一个元素
s.pop() 

 
 
  • 1
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()

print(x)

  • 1
  • 2
  • 3
  • 4
Runoob

 
 
  • 1
计算集合元素个数
len(s)

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3

 
 
  • 1
  • 2
  • 3
清空集合
s.clear()

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

 
 
  • 1
  • 2
  • 3
  • 4
判断元素是否在集合中存在
x in s

 
 
  • 1
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
集合内置方法完整列表
方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()返回集合的交集
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
issubset()判断指定集合是否为该方法参数集合的子集
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合
symmertric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
union()返回两个集合的并集
update()给集合添加元素
Dictionary(字典)
  • 可变容器模型,且可以存储任意类型对象

格式:

d = {key1 : value1, key2 : value2, key3 : value3 }

 
 
  • 1

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

一个简单的字典实例:

dict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}

 
 
  • 1

字典(dictionary)是Python中另一个非常有用的内置数据类型。

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

实例:

dict = {}
dict['one'] = "1 - YYY"
dict[2]     = "2 - FFF"

tinydict = { ‘name’: ‘runoob’,‘code’:1, ‘site’: ‘www.runoob.com’}

print (dict[‘one’]) # 输出键为 ‘one’ 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

实例输出结果

1 - YYY
2 - FFF
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

构造函数 dict() 可以直接从键值对序列中构建字典如下:

>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Runoob': 1, 'Google': 2, 'Taobao': 3}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
访问字典里的值

把相应的键放入到括号里

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print ("dict[‘Name’]: ", dict[‘Name’])
print ("dict[‘Age’]: ", dict[‘Age’])

  • 1
  • 2
  • 3
  • 4

结果

dict['Name']:  Runoob
dict['Age']:  7

 
 
  • 1
  • 2

如果用字典里没有的键访问数据就会输出错入:

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print ("dict[‘Alice’]: ", dict[‘Alice’])

  • 1
  • 2
  • 3

结果

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'

 
 
  • 1
  • 2
  • 3
  • 4
修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

dict[‘Age’] = 8 # 更新 Age
dict[‘School’] = “菜鸟” # 添加信息

print ("dict[‘Age’]: ", dict[‘Age’])
print ("dict[‘School’]: ", dict[‘School’])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出结果

dict['Age']:  8
dict['School']:  菜鸟

 
 
  • 1
  • 2
删除字典元素

能删单一的元素也能清空字典,清空只需一项操作

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

del dict[‘Name’] # 删除键 ‘Name’
dict.clear() # 清空字典
del dict # 删除字典

print ("dict[‘Age’]: ", dict[‘Age’])
print ("dict[‘School’]: ", dict[‘School’])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable
# 引发一个异常,因为用执行 del 操作后字典不再存在

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}

print ("dict[‘Name’]: ", dict[‘Name’])

  • 1
  • 2
  • 3
dict['Name']:  小菜鸟

 
 
  • 1
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
dict = {['Name']: 'Runoob', 'Age': 7}

print ("dict[‘Name’]: ", dict[‘Name’])

  • 1
  • 2
  • 3
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'

 
 
  • 1
  • 2
  • 3
  • 4
字典内置函数&&方法
函数
函数描述
len(dict)计算字典元素个数,即键的总数
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> len(dict)
3

 
 
  • 1
  • 2
  • 3
函数描述
str(dict)输出字典,以可打印的字符串表示
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(dict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"

 
 
  • 1
  • 2
  • 3
函数描述
type(variable)返回输入的变量类型,如果变量是字典就返回字典类型
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(dict)
<class 'dict'>

 
 
  • 1
  • 2
  • 3
方法
方法描述
radiansdict.clear()删除字典内所有元素
radiansdict.copy()返回一个字典的浅复制
radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key,default = None)返回指定键的值,如果键不在字典中返回 default 设置的默认值
key in dict如果键在字典dict里返回True,否则返回False
radiansdict.items()以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys()返回一个迭代器,可以使用 list() 来转换为列表
radiansdict.setdefault(key,defaul = None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2)把字典dict2的键/值对更新到dict里
radiansdict.values()返回一个迭代器,可以使用 list() 来转换为列表
pop(key,default)删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
popitem()随机返回并删除字典中的最后一对键和值

Python数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数描述
int (x)将x转换成一个整数
float(x)将x转化成一个浮点数
complex(real,imag)创建一个复数
str(x)将对象x转换成字符串
repr(x)将对象x转换成表达式字符串
eval(str)用来计算字符串中有效python表达式,并返回一个对象
tuple(s)将序列s转换成一个元组
list(s)将序列s转换成一个列表
dict(d)创建一个字典,d必须是一个(key,value)的元组序列
set(s)转换成可变集合
frozense(s)转换成为不可变集合
chr(x)将一个整数转化成字符值
ord(x)将一个字符转换成它的整数值
hex(x)将一个整数转换成一个十六进制字符串
oct(x)将一个整数转换成一个八进制字符串

运算符

Python 语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

算术运算符

以下假设变量a为10,变量b为21:

运算符描述实例
+加 - 两个对象相加a + b 输出结果 31
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -11
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 210
/除 - x 除以 yb / a 输出结果 2.1
**幂 - 返回x的y次幂a**b 为10的21次方
%取模 - 返回除法的余数b % a 输出结果 1
//取整除 - 向下取接近商的整数>>> 9//2 4 >>> -9//2 -5

实例

a = 21
b = 10
c = 0

c = a + b
print (“1 - c 的值为:”, c)

c = a - b
print (“2 - c 的值为:”, c)

c = a * b
print (“3 - c 的值为:”, c)

c = a / b
print (“4 - c 的值为:”, c)

c = a % b
print (“5 - c 的值为:”, c)

# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print (“6 - c 的值为:”, c)

a = 10
b = 5
c = a//b
print (“7 - c 的值为:”, c)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

结果

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

比较运算符

以下假设变量a为10,变量b为20:

运算符描述实例
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 True
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 True。
>=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False
<=小于等于 - 返回x是否小于等于y(a <= b) 返回 True。

实例

a = 21
b = 10
c = 0

if ( a == b ):
print (“1 - a 等于 b”)
else:
print (“1 - a 不等于 b”)

if ( a != b ):
print (“2 - a 不等于 b”)
else:
print (“2 - a 等于 b”)

if ( a < b ):
print (“3 - a 小于 b”)
else:
print (“3 - a 大于等于 b”)

if ( a > b ):
print (“4 - a 大于 b”)
else:
print (“4 - a 小于等于 b”)

# 修改变量 a 和 b 的值
a = 5
b = 20
if ( a <= b ):
print (“5 - a 小于等于 b”)
else:
print (“5 - a 大于 b”)

if ( b >= a ):
print (“6 - b 大于等于 a”)
else:
print (“6 - b 小于 a”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

输出结果

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

赋值运算符

以下假设变量a为10,变量b为20

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a
:=海象运算符,可在表达式内部为变量赋值。if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")

赋值操作实例

a = 21
b = 10
c = 0

c = a + b
print (“1 - c 的值为:”, c)

c += a
print (“2 - c 的值为:”, c)

c *= a
print (“3 - c 的值为:”, c)

c /= a
print (“4 - c 的值为:”, c)

c = 2
c %= a
print (“5 - c 的值为:”, c)

c **= a
print (“6 - c 的值为:”, c)

c //= a
print (“7 - c 的值为:”, c)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果

1 - c 的值为: 31
2 - c 的值为: 52
3 - c 的值为: 1092
4 - c 的值为: 52.0
5 - c 的值为: 2
6 - c 的值为: 2097152
7 - c 的值为: 99864

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下

变量 a 为 60,b 为 13 二进制格式如下

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1(a|b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

位运算符的实例

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0

c = a & b # 12 = 0000 1100
print (“1 - c 的值为:”, c)

c = a | b # 61 = 0011 1101
print (“2 - c 的值为:”, c)

c = a ^ b # 49 = 0011 0001
print (“3 - c 的值为:”, c)

c = ~a # -61 = 1100 0011
print (“4 - c 的值为:”, c)

c = a << 2 # 240 = 1111 0000
print (“5 - c 的值为:”, c)

c = a >> 2 # 15 = 0000 1111
print (“6 - c 的值为:”, c)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

运行结果

1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符逻辑表达式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 Truenot(a and b) 返回 False

实例


a = 10
b = 20

if ( a and b ):
print (“1 - 变量 a 和 b 都为 true”)
else:
print (“1 - 变量 a 和 b 有一个不为 true”)

if ( a or b ):
print (“2 - 变量 a 和 b 都为 true,或其中一个变量为 true”)
else:
print (“2 - 变量 a 和 b 都不为 true”)

# 修改变量 a 的值
a = 0
if ( a and b ):
print (“3 - 变量 a 和 b 都为 true”)
else:
print (“3 - 变量 a 和 b 有一个不为 true”)

if ( a or b ):
print (“4 - 变量 a 和 b 都为 true,或其中一个变量为 true”)
else:
print (“4 - 变量 a 和 b 都不为 true”)

if not( a and b ):
print (“5 - 变量 a 和 b 都为 false,或其中一个变量为 false”)
else:
print (“5 - 变量 a 和 b 都为 true”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

运行结果

1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

成员运算符

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 Falsex 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

实例

a = 10
b = 20
list = [1, 2, 3, 4, 5 ]

if ( a in list ):
print (“1 - 变量 a 在给定的列表中 list 中”)
else:
print (“1 - 变量 a 不在给定的列表中 list 中”)

if ( b not in list ):
print (“2 - 变量 b 不在给定的列表中 list 中”)
else:
print (“2 - 变量 b 在给定的列表中 list 中”)

# 修改变量 a 的值
a = 2
if ( a in list ):
print (“3 - 变量 a 在给定的列表中 list 中”)
else:
print (“3 - 变量 a 不在给定的列表中 list 中”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

输出结果

1 - 变量 a 不在给定的列表中 list2 - 变量 b 不在给定的列表中 list3 - 变量 a 在给定的列表中 list
 
 
  • 1
  • 2
  • 3

身份运算符

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

实例

a = 20
b = 20

if ( a is b ):
print (“1 - a 和 b 有相同的标识”)
else:
print (“1 - a 和 b 没有相同的标识”)

if ( id(a) == id(b) ):
print (“2 - a 和 b 有相同的标识”)
else:
print (“2 - a 和 b 没有相同的标识”)

# 修改变量 b 的值
b = 30
if ( a is b ):
print (“3 - a 和 b 有相同的标识”)
else:
print (“3 - a 和 b 没有相同的标识”)

if ( a is not b ):
print (“4 - a 和 b 没有相同的标识”)
else:
print (“4 - a 和 b 有相同的标识”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

输出结果

1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识

 
 
  • 1
  • 2
  • 3
  • 4
s 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

>>>a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

运算符优先等级

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,求余数和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
== !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符

实例

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d #( 30 * 15 ) / 5
print ("(a + b) * c / d 运算结果为:", e)

e = ((a + b) * c) / d # (30 * 15 ) / 5
print ("((a + b) * c) / d 运算结果为:", e)

e = (a + b) * (c / d) # (30) * (15/5)
print ("(a + b) * (c / d) 运算结果为:", e)

e = a + (b * c) / d # 20 + (150/5)
print (“a + (b * c) / d 运算结果为:”, e)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

运行结果

(a + b) * c / d 运算结果为: 90.0
((a + b) * c) / d 运算结果为: 90.0
(a + b) * (c / d) 运算结果为: 90.0
a + (b * c) / d 运算结果为: 50.0

 
 
  • 1
  • 2
  • 3
  • 4

and 拥有更高优先级:

x = True
y = False
z = False

if x or y and z:
print(“yes”)
else:
print(“no”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结果

yes

 
 
  • 1

编程第一步

  • 斐波那契额数列
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 10:
    print(b)
    a, b = b, a+b

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中 第四行 的计算方式先计算右边表达式,然后同时赋值给左边,等价于:

n=b
m=a+b
a=n
b=m

 
 
  • 1
  • 2
  • 3
  • 4

输出结果

1
1
2
3
5
8

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

end关键字

关键字end可以用于将结果输出到同一行,或者在输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值