💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
<div id="top"/> [TOC] # 列表 (List) * 是Python中最基本的数据结构,也是最常用的数据类型。 * 都可以进行的操作包括索引,切片,加,乘,检查成员。 * 有两类常用操作:索引(index) 和 切片(slice) ## 访问、添加、修改、删除元素 元素访问、添加、修改、删除 都是索引(index)操作 ~~~ python >>> l = [365, 'everyday', 0.618, True] >>> print l[0] # 输出 [365, 'everyday', 0.618, True] # 访问元素 >>> print l[0] # 输出 365 # 添加元素 l.append(1024) >>> print l # 输出 [365, 'everyday', 0.618, True, 1024] # 修改元素 l[0] = 123 >>> print l # 输出 [123, 'everyday', 0.618, True, 1024] # 删除元素 del l[0] >>> print l # 输出 ['everyday', 0.618, True, 1024] ~~~ ## 切片 * print l[startIndex : endIndex] ➣ 开始位置包含在切片中,而结束位置不包括 ➣ 输出index = startIndex 到 index = endIndex - 1 范围的值 * print l[ : endIndex] ➣ 不指定startIndex,切片就从第一个元素开始 * print l[startIndex : ] ➣ 不指定endIndex,切片一直到最后一个结束元素 * print l[ : ] ➣ 都不指定,则返回整个列表 ~~~ python l = [365, 'everyday', 0.618, True] # 输出list中的最后一个元素 >>> print l[-1] # 输出 True # 输出list中倒数第三个元素 >>> print l[-3] # 输出 everyday # 输出 index = 1 到 index = 3-1 的元素 >>> print l[1:3] # 输出 ['everyday', 0.618] # 输出 index = 0 到 index = 3-1 的元素 >>> print l[:3] # 输出 [365, 'everyday', 0.618] # 输出 index = 1 到 列表最后一个元素 >>> print l[1:] # 输出 [ 'everyday', 0.618, True] # 输出列表所有元素 >>> print l[:] # 输出 [365, 'everyday', 0.618, True] ~~~ ## 步长 * 步长可以使正数或负数,但不能是0 * 步长是负数时 ➣ 开始点索引必须大于结束点索引 numbers[8:3:-2] 8 (开始索引) > 3(结束点索引) ➣ 从序列尾部向左提取元素,知道第一个元素 * 步长是正数时,则从序列的头部开始向右提取元素 ~~~ python >>> numbers = [1,2,3,4,5,6,7,8,9,10] >>> print numbers[:5:1] # [1,2,3,4,5] 步长设置为1 (默认就是1) >>> print numbers[:5:2] # [1,3,5] >>> print numbers[8:3:-2] # [9,7,5] ~~~ ## 切片赋值 ~~~ python >>> name = list('shihongji') >>> print name # 输出 ['s', 'h', 'i', 'h', 'o', 'n', 'g', 'j', 'i'] # 例: 给列表 name 中给第 7(包含第七个元素)个元素后面的元素赋值 >>> name[7:] = list('hong') >>> print name # 输出 ['s', 'h', 'i', 'h', 'o', 'n', 'g', 'h', 'o', 'n', 'g'] # 例: 给第 1 个元素和第 2 个元素赋值 >>> numbers = [1, 2, 4, 5] >>> numbers[1:3] = 3 >>> print numbers # 输出 [1, 3, 5] # 例: >>> numbers = [3,1,4,5,8,10] >>> print numbers[:3:2] # 输出 [3,4] >>> numbers[:3:2] = [9] * 2 # 实际就是把[3,4] 替换赋值 [9] * 2 步数是几就乘几 >>> print numbers # 输出 [9, 1, 9, 5, 8, 10] ~~~ ## 列表相加 ~~~ python >>> print [1,2,3] + [4,5,6] # 输出 [1, 2, 3, 4, 5, 6] ~~~ ## 乘法 * 这是一个很神奇的地方 ~~~ python # 等同于 'Python' + 'Python' + 'Python' + 'Python' + 'Python' >>> print 'Python' * 5 # 输出 PythonPythonPythonPythonPython # 利用了列表相加 等同于 [10] + [10] + [10] + [10] + [10] >>> print [10] * 5 # 输出 [10, 10, 10, 10, 10] ~~~ ## in 运算符 * 检查一个值是否在列表中 * 存在返回True 不存在返回False ~~~ python >>> name = '侍洪洪' >>> print '洪' in name # 输出 True >>> print '洪吉' in name # 输出 False >>> names = ['侍洪洪', '侍不是傻', '侍洪吉'] >>> print '侍洪洪' in names # 输出 True >>> print '洪吉' in names # 输出 False >>> database = [ ['honghong', '123'], ['hongji', '1234'], ['shihongji', '000000'] ] >>> name = raw_input('输入用户名:') >>> pin = raw_input('PIN码:') >>> if [name,pin] in database: >>> print 'User Acc granted' ~~~ ## 列表函数(len、min、max、list) ~~~ python >>> nl = [10,4,7,2,3,0] >>> sl = ['shihongji', 'shihonghong', 'shixiaohong'] # len() 返回列表长度 >>> print len(nl) # 输出 6 >>> print len(sl) # 输出 3 # min() 返回列表中最小元素 >>> print min(nl) # 输出 0 >>> print min(sl) # 输出 shihonghong # max() 返回列表中最大元素 >>> print max(nl) # 输出 10 >>> print max(sl) # 输出 shixiaohong ~~~ * max 和 min 参数并不是一个序列,是以多个数值直接作为参数 ~~~ python >>> print min(1,5,2,1) # 输出 1 >>> print max(1,5,2,3) # 输出 5 ~~~ * list() 把字符串强制转换成字符数组 ~~~ python >>> print list('shi') # 输出 ['s','h','i'] ~~~ ## list1.extend(list2) 和 list1 + list2 * extend() 在列表末尾一次性追加另一个序列中的多个值 ➣ list1.extend(list2) extend 函数修改了被扩展的 list1 列表 ~~~ python >>> list1 = [1,2,3] >>> list2 = [4,5,6] >>> list1.extend(list2) # 把b列表元素追加到a列表后 >>> print list1 # 输出 [1, 2, 3, 4, 5, 6] ~~~ * list1 + list2 会生成一个新的列表 list3 ~~~ python >>> list1 = [9,8,7] >>> list2 = [4,5,6] >>> list3 = list1 + list2 >>> print list1 # 输出 [9, 8, 7] >>> print list2 # 输出 [4, 5, 6] >>> print list3 # 输出 [9, 8, 7, 4, 5, 6] ~~~ ## 列表方法(index、insert、pop、remove、reverse、sort) * index(元素值) 返回元素在列表中的索引 * insert(要插入的索引位置, 元素值)向列表中插入元素 * pop() 移出列表元素(默认移出最后一个),并返回该元素的值 * pop(0) 移出列表第0个元素 * remove() 移出列表中的某个值 * reverse() 将列表中的数据反向存放 ➣ [1,2,3] reverse() 后 变成 [3,2,1] ~~~ python l = [1,2,3,'shi', 'hong', 'ji'] # list.index(obj) 返回元素在列表中的索引 >>> index = l.index('shi') >>> print index # 3 # list.insert(index, obj) 向列表中插入元素 >>> l.insert(0, 'honghong') >>> print l # 输出 ['honghong', 1, 2, 3, 'shi', 'hong', 'ji'] # pop() 移除列表元素(默认移出最后一个),并返回该元素的值 >>> l.pop() >>> print l # 输出 ['honghong', 1, 2, 3, 'shi', 'hong'] # pop(0) 移除列表第0个元素 >>> l.pop(0) >>> print l # 输出 [1, 2, 3, 'shi', 'hong'] # remove() 移除列表中的某个值 >>> l.remove('hong') >>> print l # 输出 [1, 2, 3, 'shi'] # reverse() 将列表中的数据反向存放 >>> l.reverse() >>> print l # 输出 ['shi', 3, 2, 1] ~~~ * list.sort() 和 sorted(list) 排序(默认升序排序): ➣ sort() 对原列表排序,会改变原列表 ➣ sorted() 排序后会生成新的列表,原列表不变 ~~~ python >>> list1 = [2,3,5,'shi', 'hong', 'ji'] >>> list2 = [2,3,5,'shi', 'hong', 'ji'] >>> list1.sort() >>> print list1 # 输出 [2, 3, 5, 'hong', 'ji', 'shi'] >>> list3 = sorted(list2) >>> print list2 # 输出 [2, 3, 5, 'shi', 'hong', 'ji'] >>> print list3 # 输出 [2, 3, 5, 'hong', 'ji', 'shi'] ~~~ ## 清空列表 * l[:] = [] 使用切片赋值的方式,把列表置空(清空当前引用的内存数据) * del l[:] (清空当前引用的内存数据) * l = [] (重新创建一个新的内存空间) ~~~ python >>> l1 = ['1', '2', 3, 4] >>> l1[:] = [] >>> print l1 # 输出 [] >>> l2 = ['2', 's', 'f'] >>> del l2[:] >>> print l2 # 输出 [] ~~~ <div style='width:100px;height:100px;position:fixed;right:0px;bottom:0' > <a href="#top">返回顶部</a> </div>