2018年6月19日【python学习笔记】

列表

python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合(不可变)
容器类型的数据:列表、元祖、字典、集合(序列)

列表(数组):一个列表中可以存储多个不同类型的数据
列表存储数据的方式:将多个数据放到一个中括号[]里面,多个数据之间用逗号隔开
列表特点:列表是可变的(指的是里面的元素的个数和值是可变的)
中括号[]是列表的标志

  • 1.声明一个列表:

声明了一个列表list1,有5个元素,分别是1,2,3,10.9,'abc'

  list1 = [1, 2, 3, 10.9, 'abc']
  print(list1)

声明一个空的列表

  list2 = []
  • 2.获取列表元素

a.获取单个元素(通过元素获取下标)

下标的范围:0元素个数-1;-1元素个数
注意:通过下标获取元素的时候,下标不能越界

  list1 = [1, 2, 3, 10.9, 'abc']
  print(list1[0])   # 获取下标是0的元素
  print(list1[-1])
  print(list1[-2])
b.获取列表中的部分元素(切片)

列表名[开始下标:结束下标],列表名[开始下标:结束下标:步长]

  list3 = [2, 10.5, 'aa', 'abc', 10]
  print(list3[1:4])   # 获取到的是1~3下标的值,获取不到4下标的值
  print(list3[:4])    # 从第一个元素开始到下标为3的所有元素
  print(list3[2:])    # 获取从下标是2开始到列表最后的所有元素
  print(list3[:])     # 获取列表开始到结束的所有元素
  print(list3[0:4:2])  # 获取的是从下标为0开始到下标为3,每2个元素取一个
  print(list3[::2])   # 获取开始到结束中,下标为偶数的元素
c.遍历列表
  list4 = [1, 34, 6, 2, 8, 91, 4]
  for item in list4:
      if item % 2 == 0:
          print(item)

  sum1=0
  for x in list4:
      sum1 += x
  print(sum1)

使用while循环

  i = 0  # i就是列表元素对应的下标
  while i < len(list4):
      print(list4[i])
      i += 1

获取下标是奇数的元素

  i = 1
  while i < len(list4):
      print(list4[i])
      i += 2

  i = 0
  while i < len(list4):
      if i % 2 == 0:
          i += 1
          continue
      print(list4[i])
      i += 1

在列表中添加元素

list1 = []

  • 1.append方法:列表名.append(元素)

append是将元素添加到列表的最后

  list1.append('abc')
  print(list1)
  list1.append(10)
  print(list1)

练习:找出列表中[1, 34, 5, 6, 89, 3, 2, 4]所有的偶数,并保存起来

  list2 = [1, 34, 5, 6, 89, 3, 2, 4]
  list3 = []
  for x in list2:
      if x % 2 == 0:
          list3.append(x)
  print(list3)
  • 2.insert:列表名.insert(下标,元素)

在指定的下标前插入指定的元素

注意:这儿的下标可以越界
  list4 = [1, 2, 3, 4, 5, 6, 7, 8]
  list4.insert(1, 'a')
  print(list4)

通过insert在4和5之间插入元素'b';再在8的后面插入元素'c'

  list4 = [1, 2, 3, 4, 5, 6, 7, 8]
  list4.insert(4, 'b')
  print(list4)
  list4.append('c')
  print(list4)
  list4.insert(8, 'c')  # 当下标大于等于列表的长度,会插到列表的最后
  print(list4)
  • 2.修改元素:通过下标拿到对应的元素,然后重新赋值

    list1 = [1, 2, 3, 4, 5, 6]
    list1[1] = 20
    print(list1)
    

list1 = [1, 2, 3, 4, 5, 6]
让列表的所有元素变为原来的2倍

  list1[:] = 2, 4, 6, 8, 10, 12
  print(list1)

  list1 = [1, 2, 3, 4, 5, 6]
  for x in range(0, len(list1)):
      list1[x] = list1[x] * 2
  print(list1)

让列表中偶数位的元素变为原来的2倍

  list1 = [1, 2, 3, 4, 5, 6]
  print(list1[::2])
  for x in range(0, len(list1)):
      list1[x] = list1[x] * 2
  print(list1[::2])

删除元素

  • 1.del语句:在python中,del可以删除任何内容

del语句删除列表元素:del 列表名[下标]

注意:删除的时候下标也是不能越界
  str1 = 'Hello'
  list1 = ['a', str1, 10+20, 'b', True]
  print(list1)

删除下标为1的元素

  del list1[1]
  print(list1)

删除列表中所有的偶数

  list1 = [1, 2, 3, 4, 5, 6, 7, 8]

  出错
  x = (0~7)
  x = 0 list1[0] = 1  list = [1, 2, 3, 4, 5, 6, 7, 8]
  x = 1 list1[1] = 2  list = [1, 3, 4, 5, 6, 7, 8]
  x = 2 list1[2] = 4  list = [1, 3, 5, 6, 7, 8]
  x = 3 list1[3] = 6  list = [1, 3, 5, 7, 8]
  x = 4 list1[4] = 8  list = [1, 3, 5, 7]
  x = 5 list1[5] =   越界
  for x in range(0, len(list1)):
       if list1[x] % 2 == 0:
           del list1[x]

通过下标删除要注意下标的重新分配的问题

  list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  x = 0
  while x < len(list1):
      if list1[x] % 2 == 0:
          del list1[x]
      else:
          x += 1
  print(list1)

删除列表中的字符串

isinstance(变量,类型):判断指定变量/值是否是指定的类型
str(字符串)、int(整型)、float(浮点型)、bool(布尔)、list(列表)、tuple(元祖)、dict(字典)

  re = isinstance('aa', str)  # 获取'aa'是否是字符串
  print(re)
  list3 = ['a', 1, 20, 'pp', 19.3, 'ohk']
  x = 0
  while x < len(list3):
      if isinstance(list3[x], str):
          del list3[x]
      else:
          x += 1
  print(list3)
  • 2.通过remove方法删除指定元素

格式:列表名.remove(元素)

  list4 = ['a', 'b', 'c', 1, 2, 3]
  list4.remove('c')
  print(list4)

如果列表中有多个相同元素,remove只删除第一个

  list4 = ['a', 'b', 'c', 1, 2, 'c']
  list4.remove('c')
  print(list4)

删除列表[1, 3, 4, 7, 8, 2, 3, 4, 1]中所有的奇数

  list5 = [1, 3, 4, 7, 8, 2, 3, 4, 1]
  x = 0
  while x < len(list5):
      value = list5[x]
      if value % 2 != 0:
          list5.remove(value)
      else:
          x += 1
  print(list5)
  • 3.使用pop()方法删除指定下标的元素

格式:列表名.pop(下标) 从列表中取出指定下标对应的元素
格式:列表名.pop() 从列表中取出最后一个元素

  list6 = [1, 2, 3, 4, 5, 6]
  delitem = list6.pop(1)   # 将下标是1的元素从list6中取出,并存到delitem中
  print(delitem, list6)

  del_item = list6.pop()
  print(del_item, list6)

将一个列表[1, 2, 3, 4, 5, 6]中的元素全部取出放到另一个列表里面变成[6, 5, 4, 3, 2, 1]

  list6 = [1, 2, 3, 4, 5, 6]
  list7 = []
  while len(list6) > 0:

      # 从前往后取
      value = list6.pop(0)
      list7.insert(0, value)

      # 从后往前取
      # value = list6.pop()
      # list7.append(value)

  print(list6)
  print(list7)

常用函数

  • 1.求列表的长度

    list1 = [1, 2, 3, 4, 5, 6]
    length = len(list1)
    print(length)
    
  • 2.列表的加操作

列表1 + 列表2 :将列表1和列表2中的元素,组合成新的列表

  list2 = [1, 2, 3, 4] + ['a', 'b', 'c', 'd']
  print(list2)
  • 3.列表的*的操作

列表*数字 将列表中元素重复指定次数,组合成一个新的列表

  list3 = [10, 2] * 4
  print(list3)
  • 4.in 和 not in

元素in列表:判断指定的元素是否在指定的列表中

  list4 = ['abc', '123', 1, 10]
  re = 'abc' in list4
  print(re)

元素 not in 列表:判断指定元素是否不在列表中

  re = 'ab' not in list4
  print(re)
  • 5.获取列表中的最大元素

格式:max(列表)

  list5 = [1, 34, 6, 78, 90, 12, 35]
  max1 = max(list5)
  print(max1)

  list6 = ['a', 'b', 'c', 'd', 'aaa']
  print(max(list6))
注意:获取最大值或最小值的时候,列表中的元素的类型要么都是数字,要么都是字符串
  list6 = ['a', 'b', 96, 97, 98]
  print(max(list6))
  TypeError: '>' not supported between instances of 'int' and 'str'
  • 6.获取列表中的最小值

格式:min(列表)

  list5 = [1, 34, 6, 78, 90, 12, 35]
  print(min(list5))

list6 = ['a', 'b', 'c', 'd', 'aaa']
  print(min(list6))

练习:求比赛的平均分数(5个裁判,给表演打分。去掉一个最高分,最低分,最后的平均分)

  import random
  list1 = []
  for _ in range(5):
      num = random.randint(0, 10)   # 随机产生浮点数是random.uniform
      list1.append(num)
  print(list1)

去掉最高分和最低分

  max1 = max(list1)
  min1 = min(list1)
  list1.remove(max1)
  list1.remove(min1)

计算平均数
sum(列表):计算列表元素中所有的元素的和

print(sum(list1)/len(list1))

  • 7.将其他的数据转换成列表

个数:list(数据)
将字符串转换成列表

  list1 = list('abcdef')
  print(list1)

将列表转换成字符串(不是仅仅将列表的元素拼接成字符串的,而是将整个列表所有的结构都作为字符串的字符)

  str1 = str([1, 2, 3, 4, 'a'])
  print(str1)

将range转换成列表

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

推荐阅读更多精彩内容