tuple是不可变的,tuple里面的元素,也是不可替换的。但是这针对的是仅包含基础数据类型(数字类型、布尔类型、字符串类型)的数据,对于组合数据类型,则不受这个约束。
T = (1, 'CH', [3, 4])
L = T[2]
print(L) # ==> [3, 4]
# 尝试替换L中的元素
L[1] = 40
print(L) # ==> [3, 40]
print(T) # ==> (1, 'CH', [3, 40])
因为虽然tuple中的list元素改变了,但是tuple本身指向的list仍然是同一个list,list本身并没有改变,改变的只是list里面的一个元素,这是tuple所约束不到的范围。
如果我们直接替换list,这也是不行的。
T = (1, 'CH', [3, 4])
L2 = [3, 40]
# 尝试替换tuple中的list
T[2] = L2
# 报错
包含 0 个元素的 tuple,也就是空tuple,直接用()表示T=()
因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果(1)被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
T = (1)
print(T) # ==> 1
因此,要定义只有一个元素的tuple,需要在元素后面添加一个逗号,。
T = (1, )
print(T) # ==> (1, )
而对于多个元素的tuple,则加和不加这个逗号,效果是一样的。
在使用上,tuple提供了便捷的方法可以访问tuple中的数据。
count()方法用来统计tuple中某个元素出现的次数。
index()方法可以返回指定元素的下标,当一个元素多次重复出现时,则返回第一次出现的下标位置。
注意,index()方法和count()方法不一样,当指定的元素不存在时,使用index()方法Python会报错。
替换元素L[2]='*****'/L[-3]='*****'
pop()方法默认删除列表的最后一个元素
pop()还可以接收一个参数,指定需要删除的元素的位置。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
name = L.pop()
print(name) # ==> Ellena
print(L) # ==> L = ['Alice', 'Bob', 'Candy', 'David']
name = L.pop(2)
print(name) # ==> Candy
pop(2)☞删除第2个位置后面的第三个位置
注意,append()方法总是将元素添加到list的尾部。
insert()方法需要两个参数,分别是需要插入的位置,以及需要插入的元素。
例:names = ['Alice', 'Bob', 'David', 'Ellena']
names.insert(2, 'Candy')
print(names) # ==> ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
第一个位置用0 names.insert(0,'Candy')
-1来表示最后一个元素。
0表示第一个元素。
判断print是否需要缩进4个字符
如果不缩进的话,则:
print(result) 不在循环体中,因此它只会在循环结束后执行一次,并且打印的是最后一次循环计算得到的 result 值,而不是每个长方体的表面积。
if 语句:属于条件判断语句,用于依据特定条件是否成立来决定是否执行某段代码。它不会重复执行代码块,仅做一次条件判断。
while 循环:是循环语句,只要指定的条件为真,就会持续执行循环体中的代码,直至条件变为假。
:之后都要空四个字符
需要按两次回车结束循环体,再打print
sum容易出错,最好用total
age = 5
if age>=18:
print('adult')
elif age>6 and age<18:
print('teenager')
elif age>3 and age<6:
print('kid')
else:
print('baby')
>>> age=19
>>> if age>=18:
... print(f'your age={age}')
... print('adult')
...
your age=19
adult
使用if语句,用print的时候,一定要在if的下一行缩进四个空格
由于'和"会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为
'Bob said \"I\'m OK\".'
注意:转义字符 \不计入字符串的内容中。
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
raw字符串为原始字符串
单行:r'....'
多行:r'''.......'''
应用:字符串本身包含多个‘;“;\等容易需要转译的符号,用表示就不用很麻粉的在每个符号前面打\
字符串编码在数据存储、网络传输、多语言支持、数据库操作、文本处理和安全等多个领域都有着不可或缺的作用。正确使用字符串编码可以避免出现乱码问题,确保数据的准确传输和处理。
字符串拼接:借助 + 运算符来拼接两个字符串。
字符串重复:使用 * 运算符使字符串重复多次。
字符串切片:通过指定索引范围来提取子字符串。
字符串查找:利用 find() 方法查找子字符串的起始索引。
字符串替换:使用 replace() 方法把指定的子字符串替换成新的字符串。
字符串大小写转换:upper() 方法将字符串转换为大写,lower() 方法将字符串转换为小写。
字符串分割:split() 方法依据指定的分隔符把字符串分割成列表。
字符串去除空白:strip() 方法能够去除字符串首尾的空白字符。
字符串格式化:format() 方法把变量的值插入到字符串的占位符中。
f-string 格式化:这是 Python 3.6 及以上版本支持的一种简洁的字符串格式化方式
重点:{};format,format是格式化的意思
应用:f-string是新的格式化字符串
1、保留两位小数
>>> number=123.456
>>> result='{:.2f}'.format(number)
>>> print(result)
123.46
2、增加千位分隔符
>>> number=1234567
>>> result='{:,}'.format(number)
>>> print(result)
1,234,567
重点:因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True,所以:
and 运算符:对于表达式 x and y,Python 会先计算 x 的值。如果 x 的布尔值为 False(比如 0、空字符串、None 等),那么整个表达式的值就直接返回 x,因为无论 y 的值是什么,False and y 结果都为 False,所以不需要再计算 y 了。如果 x 的布尔值为 True,则返回 y 的值,因为此时整个表达式的值取决于 y。
在 True and 0 中,True 的布尔值为 True,所以返回 0。
or 运算符:对于表达式 x or y,Python 会先计算 x 的值。如果 x 的布尔值为 True,那么整个表达式的值就直接返回 x,因为无论 y 的值是什么,True or y 结果都为 True,不需要再计算 y 了。如果 x 的布尔值为 False,则返回 y 的值,因为此时整个表达式的值取决于 y。
在 0 or 99 中,0 的布尔值为 False,所以返回 99。
关键要看是and还是or;
在list里面,每一个元素都有一个唯一的位置,我们称之为索引(index)
注意,这里要注意区分,列表的定义也是通过中括号[]来定义的,但这和通过索引访问列表里面的元素并不冲突
列表和字符串一样,也支持切片
如果我们越界切片的话,不会出现Python运行错误,但是按照这样的下标去切片,获取不到任何元素。
可以按顺序访问列表中的元素
字符串也可以看作是一种特殊的列表,它只能按顺序存放多个字符。
通过for循环访问列表每一个元素的方式,我们称为迭代。
在程序中,容器是一种可以把多个元素放在一起的数据结构,容器中的元素可以逐个地迭代获取
in,not in
列表(list)是一种有序的容器,用中括号把元素括起来,可以放入数字、字符串等数据类型,list可以同时放入任意类型的数据
continue 跳过字符
用break跳出循环
while True:
if num > 100:
break
for ch in s:
if num > 20:
break
print(ch)
num = num + 1
短路计算
在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。