本周内容回顾
本周内容
- 基本数据类型
- 基本运算符
- 流程控制
- while循环
- for循环
- 数据类型内置方法
基本数据类型
日常生活中我们用来表示一些事物的特征一些描述
比如表示年龄时我们一般都用整数 表示一个人身高时我们用的是小数 表示说了一段话时是文本信息
在代码中我们也有数据类型来表示一些事物的状态的描述
1.数据类型之整型(int)
# 整型就是数字 用来表示整数的有 年龄 年份 班级人数等 age = 18 year = 2022 '''这样我们就定义了年龄为18 年份为2022 这样我们在后面代码中就可以通过 age 和 year 拿到 18 和2022'''
2.数据局类型值浮点型(float)
# 浮点型其实就是小数 用来表示浮点型的有 人的身高 体重等 height = 178.8 weight = 66.6 '''其实也就是用小数定义了一个身高和体重 后续写代码的时候可以通过变量名拿到我们所需要的值'''
3.数据类型之字符串(str)
# 字符串就是一串文本信息然后绑定给一个变量名 name = 'tony' gender = "male" hobby = '''run''' addr = """上海""" ''' 定义文本信息就是一定要加引号 如果是字符串还要在它的左边加个赋值符号绑定给变量名 这样才能区别开字符串和注释 引号可以之所以有这么多方式是因为当我们在一句话中需要用到两种引号 那么我们就不能用统一种引号要区别开 比如外面是用双引号的内部就要用单引号 反之亦然 '''
4.数据类型之列表(list)
# 列表可以存储多个数据值的类型 并能快速且方便的取值 而且还是有序的 l1 = ['jason', 'tony', kevin'] l2 = [1, 2, 3, 4, 5] l3 = [1, 1.2, 'tony', [1, 2]] ''' 列表就是一个中括号括起来 然后在括号中存入数据值 数据值与数据值用逗号隔开 向上述所表达的列表可以存储多个数据值 数据值可以是任意类型 当我们存储数据时 最重要的就是后续我们还要取数据 列表因为是有序的 所以我们取列表时是按索引取值 在计算机中我们的计数方式为0123 开头为0 ''' # 索引取值 print(l1[0]) # 因为开头第一个索引值为0 所以我们取出的值为 'jason' print(l3[3][1]) # 去列表中列表的值时我们可以这样写 2 print(l2[6]) # 当列表中没有这个索引时 会直接报错
5.数据类型之字典(dict)
# 字典也是可以存储多个值 也是可以快速且方便的取值 并且对值还可以有描述信息 但是是无序的 d1 = {'name':'tony', 'age':18, 'hobby':'run'} ''' 字典就是一个大括号起来 然后在括号中存入k,v键值对 键值对与键值对用逗号隔开 'name'就是一个k 'tony'就是一个v 'name':'tony'就是一个键值对 k是对v的描述信息一般是字符串 v是真正的值 可以是任意类型 因为字典是无序的 所以字典不能用索引取值 字典是按k取值的 ''' # 按k取值 print(d1['name']) # 'jason print(d1['age']) # 18 print(d1['学生']) # 如果k不存在那么就会报错
6.数据类型之布尔值(bool)
# 布尔值就是判断一个事物的两种状态 is_right = True # 真 可以 is_delete = False # 假 不可以 ''' 布尔值只有两种状态一个是真一个是假基本是用来判断用的 布尔值在整个代码中是使用频率是最高的 我么一般存储布尔值时 都是用is开头的 而在代码中只有的数据值都可以是布尔值 一般为False的为 0 None [] {} '' 除上述以外其他的都是True'''
7.数据类型之元祖(tuple)
# 元祖是可以存储多个数据值的 还可以快速方便的取值 t = (1,2,3,4) ''' 元祖就是小括号括起来 然后在小括号中存入数据值 数据值与数据值 用逗号隔开 当你定义了一个元祖后 后续元祖里面的值就不能再修改了 元祖不能修改但是能取值 元祖是按索引取值 所以元祖也有个小外号 叫 '不可变的列表' ''' print(t1[0]) # 1 # 元祖与列表的区别 l = [1,2,3,4,5] t = (1,2,3,4,5) l[0] = 'tony' # 列表索引0就会被修改为'tony' 会报错 t[0] = 'tony' # 元祖内的值是不能被修改的 print(l) # ['tony',2,3,4,5] print(t) # 报错
8.数据类型之集合(set)
# 集合也是可以存储多个数据值的 但是它一般使用来去重和关系运算的 s1 = {1,2,3,4,5} # 当我们想定义一个空集合时 s = {} # python默认 {} 是空字典 # 所以我们想要定义一个空字典需要在前面加关键字 set s1 = set() print(type(s1)) # 这样就可以定义一个空集合了
9.与用户的交互
# 与用户的交互就是计算机与用户的交互 有两种一个是输出另一个是输入 # 输入:input name = input('请输入你的名字>>:') ''' 这样就可以在计算机上输入名字然后在跟name绑定 要注意从input中输入的所有值都是字符串(str)类型 ''' # 输出:print print(123) print('jason') # print中可以是任意数据类型
10.格式化输出
# 格式化输出就是在一行文本信息中有些信息是可以改的 这样我们就可以用一些特殊符号来站位 # 占位符有两种 %s %d info = 'my name is %s my age is %s' print(info % ('tony', 18)) # my name is tony my age is 18 # 这样我们就可以使用%s先站位后续就可以想输入什么值就输入什么值 info = 'my name is %d my age is %d' print(info % ('tony', 18)) #会报错 ''' 因为%d 只能给数字站位不能给其他数据类型站位 而%s可以给任意数据类型站位 所以一般都是用%是 '''
基本运算符
1.算数运算符
算数运算符其实就是我们数学中的加减乘除
而在代码中的加减乘除的符号有点不一样
''' 加 + 减 - 乘 * 除 / 整除 // 求余 % 幂指数 ** ''' # 还有比较运算符 ''' == 判断两边是否相等 != 判断两边是否不相等 '''
2.逻辑运算符
# 逻辑运算符有三种就是 与 或 非 ''' and 与 or 或 not 非 这三种运算符都是要与判断条件配合使用的 ''' print(1 == 1 and 10 > 1 and True and 5 != 6) # True print(1 == 1 and True and 1>10 and 5 != 6) # False ''' 当and链接多个条件时 那么每个条件都要成立 最后结果才能成立 只要一个条件不成立 最后结果才不成立 ''' print(1 > 10 or 5 != 6 or Flase or 1 == 1) # True print(1 > 10 or 5 != 6 or Flase or 5 > 10) # False ''' 当and链接多个条件时 那么每个条件只要一个条件成立 最后结果就能成立 所有条件不成立 最后结果才不成立 ''' # not 就是条件取反 print(not True) # False print(not False) # True # 当三者混用时是有优先级 三者的优先级为 () > not > and > or 3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3 # 这是不合理的编写方式 (3 > 4 and 4 > 3) or ((1 == 3 and 'x' == 'x') or 3 > 3)) # 这是合理的编写方式 print( 1 == 2 and 2) # False # 当链接条件时一个表达式时那么计算机会先帮你计算结果然后再计算and的布尔值 print( 1 and 2) # 2 print(1 and 1 == 2) # True print(1 or True) # 1 print(1 == 1 or False) # True ''' 因为and的特性 当and前面的结果为True 那么结果就要看and后面的值 如果是一个布尔值那么就输出布尔值 如果是一个具体的数值那么就输出数值 而or 是只要一个条件成立结果就会成立 当or前面的值成立时 是布尔值就输出布尔值 是具体的值就输出具体的值 因为not要计算机要做计算所以肯定是布尔值 '''
3.成员运算
''' in 什么在什么之内 not in 什么不在什么之内 ''' l = ['tony', 'jason', 'kevin', 'jerry'] print('tony' in l) # True print('oscar' in l) # False print('tony' not in l) # False print('oscar' not in l) # True ''' 就是判断一个数据值是否在l这个列表中 列表用作成员运算时 最小单位是 列表中一个完整的数据值 ''' s = 'hello python' print('h' in s) # True print('he' in s) # True print('hello' in s) # True # 字符串用作成员运算时 最小单位为 单个字符串也可以增加 d = {'name':'tony', 'age':18, 'hobby': 'run'} print('name' in d) # True print('tony' in d) # False # 字典用作成员运算时 只有k会参与运算 v是不会参与成员运算的
4.身份运算
''' is 判断两个数据的内存地址是否相等 == 判断两个数据的值是否相等 ''' l1 = [1, 2, 3, 4] l2 = [1, 2, 3, 4] print(l1 is l2) # False print(l1 == l2) # True ''' 使用 is()时程序会返回一串数字 我们默认这串数字就是数据的内存地址 不过python会帮我们优化一些数字类型小而常用的值>>>:小整数池[-5,256] pycharm会帮我们优化更多 ''' i1 = 11 i2 = 11 i3 = 999999999 i4 = 999999999 print(i1 is i2) # True print(i3 is i4) # True
赋值操作
# 1.当我们想要把多个变量名跟一个数据值绑定时 x = 10 y = 10 z = 10 # 可以上方这样操作 还有链式赋值 x = y = z = 10 # 这样也可以 # 2.当我们想把两个变量名的值互换 m = 10 n = 99 print(m, n) # 10, 99 i = m m = n n = i print(m , n) # 99, 10 # 还可以交叉赋值 m, n = n, m print(m, n) # 99, 10 # 3.当我们想把列表的值一个个取出来然后绑定变量名 l = [1, 2, 3] x = l[0] y = l[1] z = l[2] # 还可以解压赋值 x, y, z = l ''' 解压赋值右边的变量数量要跟列表中数据值的数量相等 要不然会报错 当我们想只取头和尾时可以使用特殊符号 * ''' l = [1, 2, 3, 4, 5, 6] x, *y, z = l print(x) # 1 print(y) # [2,3,4,5] print(z) # 6 # *在解压赋值的时候会自动把多余的数据把它存到列表中然后赋值给*后面的变量名
流程控制
流程控制其实就是一个事物的执行过程
一般一个事物的执行过程分为三种 顺序结构 分支结构 循环结构
1.顺序结构就是一行一行按顺序执行下来
2.分支结构就是根据条件的不同执行不同的代码
3.循环结构就是根据条件的不同是否循环执行代码
4.python编写代码要非常主意缩进 在python中是根据缩进来表示代码的所属关系的
5.缩进一般四个空格 在pycharm中按tab键也行
6.当缩进量一样时 那么两个代码就没有主次之分按顺序来执行
分支结构之if
在Python中如果想要分支结构必须使用到 if 关键字
# 1.单if结构的语法 ''' if 条件: 条件成立执行的子代码 age = 18 if age < 26: print('小姐姐) ''' # 当条件成立时就会打印'小姐姐'不成立就会执行与if相同缩进量的代码 # 2.if + else 的语法 ''' if 条件: 条件成立时执行的代码 else; 条件不成立执行的代码 ''' age = 18 if age < 26: print('小姐姐') else: print('大姐') # 当if后面的条件成立时就会打印'小姐姐' 不成立时就会打印'大姐' # 3.if elif else的语法 ''' if 条件1: 条件1成立执行的子代码 elif 条件2: 条件1不成立 条件2成立执行的子代码 elif 条件3: 条件1和2都不成立 条件3成立执行的子代码 else: 上述所有的条件都不成立执行的子代码 ''' # elif可以写很多个 elif和else不能单独使用只能与if一起使用
# if 和 elif的条件可以是布尔值也可以是表达式
循环控制之while循环
# while的语法 while 条件: 条件成立循环执行的代码 ''' 1.首先判断while后面的条件是否成立 如果成立执行while的子代码 2.while的子代码执行完之后返回到while后面的条件继续判断条件是否成立 3.如果继续成立 继续执行while的子代码 执行完毕后继续返回到条件出继续判断条件是否成立 4.以此往复 直到条件不成立就会退出循环 ''' count = 1 while count < 4: print(123) count += 1 ''' 这个代码的意思是循环打印123打印一次count就加一 当count等于4时退出循环 while循环的条件可以是布尔值也可以是表达式 '''
1.while + break
# 1.while + break 的语法结构 while 条件: 条件成立时循环打印子代码 break ''' 1.首先判断while后面的条件 如果条件成立那么执行它的子代码 2.当子代码运行完之后就会执行break 3.break 的意思是强制结束本层while循环 ''' count = 1 while count < 10: print(count) ''' 这条代码的意思是循环打印1到9 当count等于10时 while的条件不成立 然后退出while循环 ''' count = 1 while count < 10: print(count) if count == 7: break ''' 这条代码的意思是打印1到6就会结束while循环 因为当count=7时就会进入if分支 if的子代码只有break break会强制结束本层while循环 所以只能打印1到6 ''' # break只能结束本层的while循环
2.while + continue
#1.while + continue的语法结构 while 条件: 条件成立时循环执行的子代码 continue ''' 1.首先判断while后面的条件 当条件成立时执行while的子代码 2.当while的子代码执行完之后 会执行 continue 3.continue关键字的意思是 结束本次循环直接开始下一次循环 ''' count = 1 while count < 11: print(count) if count == 6: count += 1 continue ''' 这条代码的意思是 打印1到5 7到10 因为当count等于6时 代码就会进入到if分支 if分支里会把count += 1 然后执行continue continue会结束本次代码然后直接返回到while后面的条件 然后继续循环 ''' # continue也是能结束本层循环
3.while + else
# 1.while + else的语法结构 while 条件: 条件成立时循环执行子代码 break else: 循环体按照提前定义好的条件正常结束 则会执行 count = 1 while count < 11: print(count) if count == 7: break count += 1 else: print(11) ''' 打印的结果为 1,2,3,4,5,6,7 竖着打印 当count等于7时 代码就会执行break 就会强制结束本层代码 所以就不会执行else 因为想要执行else 的前提是while循环是正常结束的 ''' count = 1 while count < 11: print(count) count += 1 else: print('正常结束') ''' 打印的结果为 1,2,3,4,5,6,7,8,9,10,正常结束 因为这个while循环是正常结束的 所以才会执行else的子代码print '''
4.死循环与全局标志位
# 死循环 顾名思义就是一直在那循环代码 count = 10 while True: conut *= 10 print(count) # 这个代码会一直计算count乘与10 并赋值给count 并且打印 '''在编写代码的时候不能出现死循环 有问题''' while True: name = input('username>>>:') # 这个代码虽然是个死循环但是可以给cpu有个等待时间 所以可以出现 没有问题 flag =True while flag: print('第一层循环') while flag: print('第二层循环') flag = False # 这样当你想快速结束while循环时可以把条件改成全局标志位即可 就不用多写break了
循环结构值for循环
# for循环的语法结构 for 变量名 in 可迭代的对象: 子代码 eg: l = [1,2,3,4,5,6] for i in l: print(i) # 循环打印列表l里的值 ''' for循环列表l for循环会一个一个拿到列表里的值 拿到第一个值时会赋值给变量名i 等子代码运行完之后 在拿下一个值赋值给i 一直把列表里的值全部取完为止 ''' # for 循环列表时最小单位是列表中完整的一个数据值 # for循环字典 d = {'name':'tony', 'age':18, 'hobby':'run'} for i in d: print(i) # name age hobby # for循环字典时 只有k参与循环 v是不会暴露给外面的 # for循环字符串 s = 'hello python' for i in s: print(i,end=' ') # h e l l o p y t h o n # for循环字符串时 最小单位是单个字符 # 元祖与集合跟列表一样最小单位是一个完整字符
1.for + break
# 1-10 7结束 for i in range(1,11): if i == 7: break print(i) """ break也是强制结束for循环 跟while循环的用法是一样的 break也只能够结束所在的那一层for循环 """
2.for + continue
# 1-10 7跳过 for i in range(1, 11): if i == 7: continue print(i) """ continue也是结束所在的那一次for循环 直接开始下一次 跟while循环的用法是一样的 continue也是能结束它所在的for循环 """
3.for + else
for i in range(10): print(i) if i == 5: break else: print('不会执行') -------------------- for i in range(10): print(i) else: print('会执行') """ else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码 """
数据类型的内置方法
内置方法可以看成是一个数据类型的一些自带功能(每个数据类型的内置方法都有区别)
内置方法如何查看呢?
只要把一个数据类型的关键字输上然后在后面加上英文输入法下的点好即可
eg: 数据类型 . 方法名()
'tony'.方法名
name = 'tony'
name.方法名()
使用数据类型的内置方法统一称之为句点符
1.int与float的内置方法
int和float因为都是数字 是用来运算的 没有内置方法
1.整型的类型转换 int('123') # 这是可以转换成整型的 int('11.22') # 这不能转换成整型 int('11a22') # 这不能转换成整型 int('[1,2,3]') # 这不能转换成整型 '''字符串内必须是纯数字的才可以转换 有字母或小数的都不行''' int(True) # 1 整型会把布尔值自动装换成1或0 int(False) # 0 2.进制数的转换 '''十进制转换为其它进制''' print(bin(10)) # bin() 将二进制转换为十进制 0b1010 0b是二进制的标识 print(oct(10)) # oct() 将二进制转换为八进制 0o12 0o是八进制的标识 print(hex(10)) # hex() 将二进制转换为十六进制 0xa 0x是十六进制的标识 '''将其他进制转换为十进制''' '''int可以自动识别进制数然后转换为十进制数''' print(int(0b1010)) # 10 print(int(0o12)) # 10 print(int(0xa)) # 10 '''还可以人为指定的进制数''' print(int('0b1010', 2)) # 10 print(int('0o12', 8)) # 10 print(int('0xa', 16)) # 10 # 浮点型 print(float('1123')) # 1123.0 整数是可以转换成小数型 python会自动帮你加一个 .0 print(float('11.32')) # 11.32 小数点也是可以转换的 但是只能识别一个小数点 print(float('11.22.33.22.5.6) # python只能识别一个小数点 print(float('11a32') # 报错 不能转换字母 print(float('[1,2,3]') # 报错 不能转换列表 ''' 列表、字典、元祖、集合都不能转换 ''' print(float(True) # 1.0 浮点型会把布尔值自动转换成1或0 print(float(False) # 0.0
2.str的内置方法
字符串可以把所有类型转换成字符串
只要加个关键字str即可
2.1索引取值
s = 'hello python' print(s[0]) # h print(s[4]) # o print(s[-1]) # n print(s[-2]) # o ''' 可以正向取值 也可以反向取值 反向取值是按1开始算的 '''
2.2切片操作
s = 'hello python!' print(s[0:3]) # hel 从索引0的位置开始切到索引2的位置 顾头不顾尾 print(s[-1:-4]) # 切片的顺序默认从左往右 # 当你第一个数字是-1时那么它就会从最后一个数字开始往右边开始计算 print(s[-1:-4:-1]) # !no 可以通过第三个参数的正负一 控制方向 print(s[-4:-1]) # hon 顾头不顾尾 第三个数字如果不写的话 默认为1
2.3len()
'''len()是可以统计字符串的中''' s = 'hello python!' print(len(s)) # 13 空格也算是字符 '''也可以直接在print中输出字符串''' print(len('hello python!')) # 13
2.4strip()
'''strip()方法可以消除字符串开头和结尾指定的字符''' name = ' tony ' res = name.strip() print(name) # tony 字符串调用内置方法 不是改变原来的值 是产生一个新的值 所以会打印原来的值 print(res) # tony 如果括号内不指定字符那么就会默认消除首尾的空格 name = '**tony**' print(name.strip('*')) # tony 如果指定了字符 那么strip会消除字符串开头和首尾指定的字符 print(name.rstrip('*')) # **tony rstrip是消除右边指定的字符 right print(name.lstrip('*')) # tony** lstrip是消除左边指定的字符 left '''字符串调用内置方法 不是改变原来的值 而是产生一个新的值'''
2.5split()
'''split是按照指定的字符切割字符串''' s = 'tony|123|male' '当字符串出现多个一样的字符时可以使用split方法切割字符串' print(s.split('|')) # ['tony', '123', 'male'] 切割之后的结果是一个列表 '''还可以按照列表的解压赋值来赋值给变量名''' name, age, gender = s.split('|') # 可以看成是 name, age, gender = ['tony', '123', 'male'] print(name, age, gender) # tony 123 male print(s.split('|', maxsplit=1)) # 还可以指定切几次 这是从左往右切一次 ['tony', '123|male'] print(s.rsplit('|', maxsplit=1)) # 还可以从右往左切 这是从有往左切一次 ['tony|123', 'male']
2.6格式化输出
# 方式1: 等价于%s占位 s1 = 'my name is {} my age is {}' print(s1.format('tony', 18)) # my name is tony my age is 18 # 方式2: 支持索引取值 并且可以重复使用 s2 = 'my name is {0} {1} my age is {1} {0} {1}' print(s2.format('tony', 18)) # my name is tony 18 my age is 18 tony tony # 方式3: 按k取值 也可以重复使用 s3 = 'my name is {name} {age} {name} my age is {age} {name}' print(s3.format(name='tony', age=18)) # my name is tony 18 tony my age is 18 tony # 方式4:按变量名取值 也是可以重复使用的 name = 'tony' age = 18 gender = 'male' print(f'my name is {name} {age} my age is {age} {gender} my gender is {gender} {name}') # my name is tony 18 my age is 18 male my gender is male tony # 方式4 就是在字符串前面加一个f '''推荐使用方式4'''
2.7isdigit()
print('123'.isdigit()) # True print('11.23'.isdigit()) # False print('zbc'.isdigit()) # False print('11as'.isdigit()) # False '''isdigit()就是判断字符串中是否为纯数字 如果是纯数字那么返回True 如果不是那么返回False
2.8replace()
i = 'jason jason kevin tony' print(i.replace('jason', 'jerry')) # jerry jerry kevin tony 没定义数字 那么默认替换全部指定的字符 print(i.replace('jason', 'jerry', 1)) # jerry jason kevin tony 定义了数字 那么就只会替换定义的个数 从左到右
2.9拼接字符串
s1 = 'my name is ' s2 = 'tony' print(s1 + s2) # 字符串可以使用+号拼接 my name is tony print(s2 * 10) # 字符串也可以使用*号重复 tonytonytonytonytonytonytonytonytonytony print(''.join(['jason', 'kevin', 'tony'])) # jasonkevintony print('|'.join(['jason', 'kevin', 'tony'])) # jason|kevin|tony # print('|'.join(['jason', 'kevin', 'tony', 777])) # 会报错 join指定的必须是字符串类型
2.10 index和find
'''index和find都是查找指定字符的索引值''' s = 'hello python' print(s.find('h')) # 0 print(s.index('h')) # 0 print(s.index('he')) # 0 print(s.find('he')) # 0 print(s.find('d')) # -1 print(s.index('d')) # 报错 ''' 当指定的字符在字符串中时两个都是返回字符在字符串中的索引 如果不在时 index会直接报错 find会返回-1 -1就是表示不存在找不到 '''
2.11 startswith和endswith
''' startswith 是判断开头是不是指定的字符 endswith 是判断末尾是不是指定的字符 ''' i = 'jason say you is a baby' print(i.startswith('j')) # True print(i.startswith('ja')) # True print(i.startswith('jason')) # True print(i.startswith('d')) # False print(i.endswith('y')) # True print(i.endswith('by')) # True print(i.endswith('baby')) # True print(i.endswith('a')) # False '''startswith 和 endswith 可以是单个字符判断也可以是多个字符一起判断'''
2.12 lower和upper
''' lower是把字符串所有的字母变成小写 upper是把字符串所有的字母变成大写 islower是判断字符串中所有的字母是否为小写 isupper是判断字符串中所有的字母是否为大写 ''' s = 'HeLlo PyThOn PYThon 是最牛的 666' print(s.upper()) # HELLO PYTHON PYTHON 是最牛的 666 print(s.lower()) # hello python python 是最牛的 666 s1 = 'HELLO PYTHON' s2 = 'hello python' print(s1.islower()) # False print(s2.islower()) # True print(s1.isupper()) # True print(s2.isupper()) # False ''' lower和upper都只能改变字母不能改变其他的数据类型 islower和isupper也只能判断字母不能判断其他数据类型 '''
2.13 title和capitalize
title是把所有的英文字母首字母大写 caoitalize是把第一个的英文字母首字母大写 ''' s = 'my name is tony' print(s.title()) # My Name Is Tony print(s.capitalize()) # My name is tony\ '''
list的内置方法
1.列表的类型装换
# print(type(list(123))) 报错 # print(type(list(123.22))) 报错 print(list('1234abc')) # ['1', '2', '3', '4', 'a', 'b', 'c'] print(list({'name': "jason", 'pwd': 123})) # ['name', 'pwd'] """能够被for循环的数据类型都可以转换成列表"""
2.索引取值
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0]) # jason print(l1[-1]) # tony '''可以正向取值 也可以反向取值'''
3.切片取值
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0:3]) # ['jason', 'kevin', 'oscar'] print(l1[:]) # ['jason', 'kevin', 'oscar', 'tony'] print(l1[-4:-1]) # ['jason', 'kevin', 'oscar'] '''跟字符串的方法一样'''
4.len
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(len(l1)) # 4 '''计算列表中有几个数据'''