2018年6月19日【python學習筆記】

列表

python中的數(shù)據(jù)類型:數(shù)字(不可變)、字符串(不可變)、列表(可變)、元祖(不可變)、字典(可變)、集合(不可變)
容器類型的數(shù)據(jù):列表、元祖、字典、集合(序列)

列表(數(shù)組):一個列表中可以存儲多個不同類型的數(shù)據(jù)
列表存儲數(shù)據(jù)的方式:將多個數(shù)據(jù)放到一個中括號[]里面,多個數(shù)據(jù)之間用逗號隔開
列表特點:列表是可變的(指的是里面的元素的個數(shù)和值是可變的)
中括號[]是列表的標志

  • 1.聲明一個列表:

聲明了一個列表list1,有5個元素,分別是1,2,3,10.9,'abc'

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

聲明一個空的列表

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

a.獲取單個元素(通過元素獲取下標)

下標的范圍:0元素個數(shù)-1;-1元素個數(shù)
注意:通過下標獲取元素的時候,下標不能越界

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

列表名[開始下標:結(jié)束下標],列表名[開始下標:結(jié)束下標:步長]

  list3 = [2, 10.5, 'aa', 'abc', 10]
  print(list3[1:4])   # 獲取到的是1~3下標的值,獲取不到4下標的值
  print(list3[:4])    # 從第一個元素開始到下標為3的所有元素
  print(list3[2:])    # 獲取從下標是2開始到列表最后的所有元素
  print(list3[:])     # 獲取列表開始到結(jié)束的所有元素
  print(list3[0:4:2])  # 獲取的是從下標為0開始到下標為3,每2個元素取一個
  print(list3[::2])   # 獲取開始到結(jié)束中,下標為偶數(shù)的元素
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循環(huán)

  i = 0  # i就是列表元素對應(yīng)的下標
  while i < len(list4):
      print(list4[i])
      i += 1

獲取下標是奇數(shù)的元素

  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]所有的偶數(shù),并保存起來

  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.修改元素:通過下標拿到對應(yīng)的元素,然后重新賦值

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

list1 = [1, 2, 3, 4, 5, 6]
讓列表的所有元素變?yōu)樵瓉淼?倍

  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)

讓列表中偶數(shù)位的元素變?yōu)樵瓉淼?倍

  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可以刪除任何內(nèi)容

del語句刪除列表元素:del 列表名[下標]

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

刪除下標為1的元素

  del list1[1]
  print(list1)

刪除列表中所有的偶數(shù)

  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]中所有的奇數(shù)

  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(下標) 從列表中取出指定下標對應(yīng)的元素
格式:列表名.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)

常用函數(shù)

  • 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.列表的*的操作

列表*數(shù)字 將列表中元素重復指定次數(shù),組合成一個新的列表

  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))
注意:獲取最大值或最小值的時候,列表中的元素的類型要么都是數(shù)字,要么都是字符串
  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))

練習:求比賽的平均分數(shù)(5個裁判,給表演打分。去掉一個最高分,最低分,最后的平均分)

  import random
  list1 = []
  for _ in range(5):
      num = random.randint(0, 10)   # 隨機產(chǎn)生浮點數(shù)是random.uniform
      list1.append(num)
  print(list1)

去掉最高分和最低分

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

計算平均數(shù)
sum(列表):計算列表元素中所有的元素的和

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

  • 7.將其他的數(shù)據(jù)轉(zhuǎn)換成列表

個數(shù):list(數(shù)據(jù))
將字符串轉(zhuǎn)換成列表

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

將列表轉(zhuǎn)換成字符串(不是僅僅將列表的元素拼接成字符串的,而是將整個列表所有的結(jié)構(gòu)都作為字符串的字符)

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

將range轉(zhuǎn)換成列表

  list2 = list(range(10))
  print(list2)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容