列表相关操作大全

一、什么是列表

  • 列表是容器型数据,用[]表示

  • 列表元素可以是任何数据类型,元素之间用逗号隔开

  • 列表是有序的、可变的。

    list1 = [1,2,3,4,'a','张三']
    

二、列表的增删改查

一、查

1、查询单个元素
  1. 使用下标查询,下标有正负两种之分,下标不可越界。正下标从0开始到n-1;负下标从最后一个开始,是负几就是倒数第几个。

    print(list[1])       #2
    print(list[-2])      #a
    
2、查询多个元素(切片)
  1. 列表[开始下标:结束下标:步长]
  2. 步长可以省略,省略步长那么步长前面的冒号一起省略,默认步长为1。列表[开始下标:结束下标]
  3. 若省略开始下标,那么取结束下标前的所有数据,冒号不省略。列表[:结束下标:步长]
  4. 若省略结束下标,那么从开始下标开始取剩余所有数据(包含开始下标),冒号不省略。列表[开始下标::步长]
  5. 从开始下标开始取值,但是取不到结束下标的值,只能取到结束下标的前一个,切片下标值可以越界。
  6. 若步长为正,那么从前往后遍历元素;若步长为负,则从后往前遍历元素。
list1[1:4:2]        #[2, 4]
list1[1:4]      #[2, 3, 4]
list1[:4:2]     #[1, 3]
list1[:4]           #[1, 2, 3, 4]
list1[1::2]     #[2, 4, '张三']
list1[1:]           #[2, 3, 4, 'a', '张三']
list1[-7:-1:-1] #[]
list1[1:8:2]        #[2, 4, '张三']
list1 [::2]     #[1, 3, 'a']

二、改

  • 列表[index] = 值 - 修改某个特定下标的值
  • 列表[下标1:下标2] = [列表]- 修改某个范围的值,等号左右两边的值的个数可以不同
list1[2]=30                 #[1, 2, 30, 4, 'a', '张三']
list1[1:3]=[10,20,30]       #[1, 10, 20, 30, 4, 'a', '张三']

三、增

  • append(元素) - 添加在列表的末尾
  • insert(下标,元素) - 在给定下标的前面添加元素
  • extend(序列) - 将序列中的元素添加到列表中(不会产生新的列表)
list1.append(60)            #[1, 10, 20, 30, 4, 'a', '张三', 60]
list1.insert(3,50)          #[1, 10, 20, 50, 30, 4, 'a', '张三', 60]
list1.extend([70,80,90])    #[1, 10, 20, 50, 30, 4, 'a', '张三', 60, 70, 80, 90]

四、删

  • list.pop(下标) - 取出元素,默认取最后一个,取出后原列表中该元素将不存在
  • del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
  • list.remove(元素) - 若元素不存在,程序会报错;如果指定的元素存在多个,只删最前面的那个
list1.pop(-1)       #90
del list1[2]        #[1, 10, 50, 30, 4, 'a', '张三', 60, 70, 80]
list1.remove(80)    #[1, 10, 50, 30, 4, 'a', '张三', 60, 70]

三、列表相关的函数操作

  • 列表1 + 列表2 将列表1和列表2中的元素合并并产生一个新的列表

  • 列表*N 或 N*列表 N是正整数,将列表中的元素重复n次产生一个新的列表

    list1 = [1,2,3]
    list2 = ['a','b','c']
    list1 + list2         #[1, 2, 3, 'a', 'b', 'c']
    list1 * 2             #[1, 2, 3, 1, 2, 3]
    
  • == 和 !=

    补充:is 的用法
    is 和 == 的区别:

    • == 判断的是存储的值是否相等;
    • is 判断的是数据存储的地址是否相等。

    注意:给不同的变量赋相等的数字或者字符串,赋值之前系统会检查这个数字或字符串是否存在,
    如果存在直接返回数据的地址给变量,不存在才开辟新的内存。

num1 = 10
num2 = 10
print(num1 == num2)     #True
print(num1 is num2)     #True

list3 = [1,2,3]
list1 == list3      #True
list4 = [2,1,3]
list1 == list4      #False      注意列表是有序的,除了值相等以外,元素所在的位置也要相同
list1 is list3      #False
  • max(列表)
  • min(列表)

注意:此处列表中的元素类型必须一致,并且支持比较运算。

  • sorted(列表)- 将列表中的元素从小到大进行排序,产生一个新的列表,不会改变原列表。
  • sorted(列表,reverse = True) - 将列表中的元素从大到小进行排序,产生一个新的列表。

注意:此处列表中的元素类型必须一致,并且支持比较运算。

  • sum(列表) - 返回列表中所有元素的和

注意 :列表中的元素必须全部是数字

  • list(数据) - 将数据转换成列表
    • a. 所有的容器型数据类型的数据都可以转换成列表

    • b. 将容器中的元素全部转换成列表中的元素

四、列表的相关方法

  • 列表.clear - 清空列表

  • 列表.copy() - 复制列表中所有元素产生一个新的列表

  • 列表.copy() == 列表[:] == 列表+[] == 列表*1 - 浅拷贝

  • 列表.count(元素) - 统计指定元素在列表中出现的次数

  • 列表.extend(序列)- 将序列中的元素添加到列表中(不会产生新的列表)

  • 列表.index(元素) - 获取指定元素在列表中的下标值(正下标值)

    a. 如果元素不存在会报错
    b.如果元素有多个,只返回最前面那一个的下标值

  • 列表.index(元素,开始下标,结束下标)- 获取元素在列表中的下标,查找范围在开始下标到结束下标选中范围内(结束下标对应的值取不到)

  • 列表.reverse() 将列表中的元素倒序(不会产生新的列表)

  • 列表.sort()

  • 列表.sort(reverse=True)

五、列表推导式

  1. [表达式 for 变量 in 序列] (可以按照下面的方式理解)
   for 变量 in 序列:
     表达式

   让变量去序列中取值,每取一个值就创建列表中的一个元素,元素的值就是表达式的值
list2 = [x for x in range(4)]
print(list2)        #[0, 1, 2, 3]
  1. [表达式 for 变量 in 序列 if 条件语句]
     for 变量 in 序列:
       if 条件语句:
         产生元素

   让变量去序列中取值,每取一个值就判断条件语句是否为True,如果为TRUE就创建一个列表元素,元素的值就是表达式的值.
list7 = [x**2 for x in range(6) if x % 2 ]
print(list7)        #1,3,5的平方 [1, 9, 25]
  1. [表达式 for 变量1 in 序列1 for 变量2 in 序列 2]
for 变量1 in 序列 1:
  for 变量2 in 序列2:
      产生一个列表元素(值还是表达式结果)
list8 = [x*y for x in range(4) for y in range(3)]
print(list8)        #[0, 0, 0, 0, 1, 2, 0, 2, 4, 0, 3, 6]
  1. [表达式 for 变量1 in 序列1 for 变量2 in 序列 2 if 条件语句]
list9 = [x+y for x in range(3) if x%2 for y in range(3)]
print(list9)        #[1,2,3]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355