广东专业做网站排名公司,在网上做游戏网站违法吗,百度广告代理,建设阅读网站的意义目录
一、认识Python数据结构
二、列表概述
三、列表切片
#xff08;一#xff09;概述
#xff08;二#xff09;常见形式
#xff08;三#xff09;特别说明
四、列表的基本操作
#xff08;一#xff09;创建列表
#xff08;二#xff09;列表元素增加…目录
一、认识Python数据结构
二、列表概述
三、列表切片
一概述
二常见形式
三特别说明
四、列表的基本操作
一创建列表
二列表元素增加
三列表元素删除
四列表元素修改
五列表元素查找
五、与列表相关的其他常见函数
六、列表内建函数
七、列表推导式(list comprehensions) 一、认识Python数据结构 Python有4个内建的数据结构它们可以统称为容器container因为它们实际上是一些“东西”组合而成的结构而这些“东西”可以是数字、字符甚至列表或是它们的组合。 1、可变数据类型 可以直接对数据结构对象进行元素的赋值修改、删除或增加等操作。修改后的新结果仍与原对象引用同一个id地址值即由始至终只对同一个对象进行了操作。
2、不可变数据类型 不能对数据结构对象的内容进行修改操作对对象当中的元素进行增加、删除和赋值改。试图强行修改的结果会导致变量名引用一个新对象而不会改变原对象新旧对象两者是引用两个不同的id地址值。
sI like Python
id(s)
ttoo
st
id(s) 二、列表概述
列表中的元素是有序的元素可以是任何类型而且允许重复 列表属于可变数据类型允许直接对列表对象进行增、删、改操作。
all_list1 [1,word,{like:python},True,[1,2]]
因为是有序的其元素通过索引下标来访问索引的作用取单个元素 可以从左到右正向索引也可以从右到左反向索引
1、正向第一个元素的索引为0最后一个元素的索引为len(all_list1)-1
print(all_list1[0], all_list1[len(all_list1)-1]) 2、反向第一个元素正向的最后一个元素的索引为-1第二个元素正向的倒数第二个元素的索引为-2
print(all_list1[-1], all_list1[-2]) 3、当索引越界时会报错提示IndexError: list index out of range
print(all_list1[-6]) 4、根据列表内容查找索引可以使用index()方法或find()方法
print(all_list1.index(word)) index()方法或find()方法的区别找不到时前者会出错后者会返回-1
如何访问嵌套列表中的元素 答使用多维索引例如all_list1[4][1]将指向整数对象2 all_list1[4]指向的是列表对象[1,2] 而all_list1指向的是上面整个列表对象
三、列表切片
一概述
切片的作用取列表中的0到多个元素形成子列表语法sequence_name[start:end:step]注意取元素规则是左闭右开区间不包含end。当step为1时提取元素个数 (end-start)。
1、当step为正时切片方向是从左到右正常是要求start小于end sI like Python
s[2:9:2]
s[2:-4:2]
s[-11:-4:2] 2、当step为负时切片方向是从右向左正常是要求start大于end sI like Python
s[9:2:-2]
s[-4:2:-2]
s[9:-11:-2]
s[-4:-11:-2] 注意下面两个的区别
s[7:]
s[7:-1] 二常见形式 all_list1 [1,word,{like:python},True,[1,2]] all_list1[2:4] #省略stepstep默认为1提取索引为2和3的两个元素 all_list1[2:] #省略end和step提取从索引2开始的全部后面元素包含最后一个元素 all_list1[2:-1] #提取从索引2开始的后面元素但不包含最后一个元素 all_list1[:] #省略start默认从0开始提取所有元素 all_list1[::-1] #逆序整个列表 newListall_list1[:] #复制整个all_list列表 id(all_list1)
id(newList) 注意 切片不会改变原始列表而是会产生一个新的列表对象 这与Numpy中的数组切片不同后者得到的原数组对象的一个视图修改切片中的内容会导致修改原来的数组对象
三特别说明
1、step为正 表示提取方向是从左到右正常情况是要求start小于end。 如果start或end超出索引的范围或者start大于或等于end则切片操作将会返回的是空列表例如all_list1[6:8]或all_list1[3:3]
2、step为负 表示提取方向是从右到左正常情况是要求start大于end。 如果start或end超出索引的范围或者start小于或等于end则切片操作将会返回的是空列表。
四、列表的基本操作
一创建列表
1、方法一使用[ ]创建列表元素间以逗号隔开
empty1 [] #空列表
all_list1 [1,word,{like:python},True,[1,2]]
2、方法二使用list()函数创建可以把其他非列表类型的对象转换为列表类型 注意 list()函数只允许有一个参数
empty2 list() #空列表
lstr list(“student”) #lstr指向列表[s, t, u, d, e, n, t]
二列表元素增加 fruit [1,word,True,pear] month[January,February] 1、append()方法
1在末尾只能追加一个元素 2被增加的元素可以是任何类型的对象
示例
fruit [1,word,True,pear]
month[January,February]
fruit.append(month) #month列表作为一个元素被追加到尾部
print(fruit) 2、extend()方法
1在末尾合并一个可迭代对象因此可以一次性在末尾合并吸收一个或多个元素 2被合并的对象必须是一个可迭代对象
示例
fruit [1,word,True,pear]
month[January,February]
fruit.extend(month) #month列表被合并到fruit的尾部相当于fruitmonth
print(fruit) 错误示例fruit.extend(5) //整数5不是一个可迭代对象
3、insert()方法
一般用于在中间的某个指定位置索引插入一个新元素两参数分别是索引和新元素
示例
fruit [1,word,True,pear]
month[January,February]
fruit.insert(-3,apple)
fruit.insert(9,month)
print(fruit) 三列表元素删除 fruit [1,word,True,pear] 1、del关键字
既可以删除整个列表对象也可以按索引位置删除特定元素。
示例一
fruit [1,word,True,pear]
del fruit[0:2] #允许按切片形式进行删除但不会返回被删除的元素
print(fruit) 示例二
fruit [1,word,True,pear]
del fruit #删除整个列表对象
print(fruit)列表对象fruit已被删除故报错“name fruit is not defined”。
2、pop(index)方法
删除index给出的列表指定位置元素的同时还可以返回被删除的元素值。
示例
fruit [1,word,True,pear]
temp fruit.pop(2) #pop删除能返回被删除的元素
print(fruit) 当没有index参数时默认删除列表的最后一个元素。
3、remove()方法
与前面两个按位置删除不同它按元素值删除删除第1个匹配项找不到删除项则报错。
示例
fruit [1,word,True,pear]
fruit.remove(pear)
print(fruit) 4、clear()方法
清空整个列表使之成为空列表但不删除列表对象
示例
fruit [1,word,True,pear]
fruit.clear()
print(fruit) 四列表元素修改
对列表的索引/切片赋值
fruit [1,word,True,pear]
fruit[0] ‘orange’
print(fruit) 五列表元素查找
fruit [1,word,True,pear]
fruit[3] #按索引找元素
fruit.index(‘pear’) #按元素找索引也可以使用find()方法 五、与列表相关的其他常见函数 all_list [1,2,hello,word] 长度len(all_list) 计数all_list.count(‘word’) //统计元素’word’出现的次数 反转all_list[::-1] 或者 all_list.reverse()或者reversed(list) 合并list1list2注意list1.extend(list2)相当于list1list2 重复all_list * 2 例如
all_list [1,2,hello,word]
all_list * 2 返回列表元素(数值型)的最大、最小值max(list)、 min(list) 判断元素是否存在word in all_list注意与 in 相反的运算符是 not in 排序1list.sort()函数会改变列表对象本身 2sorted(list)全局方法不会改变列表对象本身却会产生一个排好序的新列表对象。
注意 ls.sort(reverseTrue)表示排序时按降序排列它与反转元素顺序的ls.reverse()方法的作用是不同的。
六、列表内建函数 web www.jou.edu.cn
str1 web.split(.)
str1str1.sort() #默认按首字母升序
str1str1.sort(keylen,reverseTrue) #当指定关键字为长度len并且reverseTrue时将按长度大小降序排列
str1all_list1 list((1,word,{like:python},True,[1,2]))
list3list(enumerate(all_list1))
print(list3) 七、列表推导式(list comprehensions)
Python推导式又称解析式允许以简洁的方式从一个可迭代对象构建出一个新的数据结构共有三种推导列表推导式构建出列表、字典推导式构建出字典和集合推导式构建出集合。
列表推导式的基本语法为
1、不带条件的列表推导式[表达式 for 变量 in 可迭代对象] 2、带条件的列表推导式又分为 1单分支[表达式 for 变量 in 可迭代对象 if 条件] 2双分支[表达式1 if 条件 else 表达式2 for 变量 in 可迭代对象]
list1 [i**2 for i in range(1,11)]
print(list1)
print([i for i, x in enumerate(list1) if x%3 0])list2 [1 if x%3 0 else 0 for x in list1]
print(list2) 3、列表推导式的嵌套[for 变量1 in 可迭代对象1 if 条件1 for 变量2 in 可迭代对象2 if 条件2]
list3 [(x,y) for x in range(5) if x%2 0 for y in range(5) if y%2 1]
print(list3) 列表推导式有助于简化for循环的写法
data [num for num in range(20) if num%21]
等价于
data []
for num in range(20):if num%2 1:data.append(num)