day004

一、列表的初识

  • why:int bool str:'123 True 太白'

    • str: 存储少量的数据。
    • str:切片还是对其进行任何操作,但是! 获取的内容全都是str类型! 存储数据单一
  • what:list

    • l1 = [ 0, 'alex',True,[1, 2, 3] ] 承载任意数据类型,存储大量的数据.
    • python常用的容器型数据类型。在python中叫 list 列表, 其他语言:Java: 数组
    • 列表是有序的,可索引切片(步长)
  • 索引,切片,步长

li = [100, '太白', True, [1, 2, 3]]
# 索引
print(li[0], type(li[0]))      # 100 <class 'int'>
print(li[1],type(li[1]))       # 太白 <class 'str'>
print(li[-1],type(li[-1]))     # [1, 2, 3] <class 'list'>

# 切片 (顾头不顾腚)
print(li[:2])                  # [100, '太白']


#相关练习题:
l1 = [1, 3, 2, "a", 4, "b", 5, "c"]
# 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
print(l1[:3])
# 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
print(l1[3:6])
print(l1[3:-2])       # 或者 先定去屁股位置 ,Right可逆向取
# # 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
print(l1[1:-2:2])
# 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
print(l1[-3::-2])
print(l1[-3:-8:-2])    # 或者 先定去屁股位置 ,Right可逆向取

二、列表的创增删改查

  • 列表的创

    • # 方式一
      l1 = [1, 2, 'Alex']
      print(l1)   # [1, 2, 'Alex']
      
      # 方式二
      l2 = list()
      l3 = list('fhsaf')
      print(l2)   # []
      print(l3)   # ['f', 'h', 's', 'a', 'f']
      
      # 方式三:列表推导式 后面讲
      
  • 列表的增

    • # case1:    append 追加的意思
      l1 = ['太白', '女神', 'xiao','吴老师', '闫龙']
      l1.append('xx')
      print(l1)                   # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'xx']
      print(l1.append('xx'),type(l1.append('xx')))      # None <class 'NoneType'>     
      # # 不能打印它,是个命令
      # 举例:
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      while 1:                        # True就是 1
          name = input('请输入新员工姓名:(Q或者q退出程序):')
          if name.upper() == 'Q':
              break                   # 不能用exit
          l1.append(name)
      print(l1)
      
      # case2:    insert 插入
      l1 = ['太白', '女神', 'xiao','吴老师', '闫龙']
      l1.insert(2,'wusir')
      print(l1)       # ['太白', '女神', 'wusir', 'xiao', '吴老师', '闫龙']
      
      # case3:    extend 迭代着追加
      l1 = ['太白', '女神', 'xiao','吴老师', '闫龙']
      l1.extend('abcd')
      print(l1)     # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'a', 'b', 'c', 'd']
      l1.extend(['alex'])
      print(l1)     # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex']
      l1.extend(['alex', 1, 3])
      print(l1)     # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex', 1, 3]
      l1.extend(['alex', 1, 3, [8,9]])
      print(l1)     # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex', 1, 3, [8, 9]]
      
      
  • 列表的删

    • # case1:    pop 按照索引位置删除
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l1.pop(-2)            # 按照索引删除 (返回的是删除的元素!!!)
      print(l1.pop(-2))     # 吴老师      (返回的是删除的元素!!!)
      print(l1)             # ['太白', '女神', '闫龙']
      
      a1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      a1.pop()              # 默认删除最后一个
      print(a1)             # ['太白', '女神', '吴老师', 'xiao']
      
      
      # case2:    remove  指定元素删除, 如果有重名元素,默认删除从左数第一个
      l1 = ['xiao', '太白', '女神', '吴老师', 'xiao', '闫龙','xiao' ]
      l1.remove('xiao')   # 有重名元素,默认删除从左数第一个
      print(l1)           # ['太白', '女神', '吴老师', 'xiao', '闫龙', 'xiao']
      # l1.remove('xia')    # 只能是元素,所以运行错误
      # print(l1)           # 运行错误
      
      # case3:    clear(了解)
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l1.clear()     # 清空,注意所有元素删除,只剩下躯壳
      print(l1)      # []
      
      
      # case4:    del 可以按照索引删除,也可以按照切片(步长)删除  ***重要
      # # 按照索引删除
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      del l1[-1]
      print(l1)    # ['太白', '女神', '吴老师', 'xiao']
      # # 按照切片(步长)删除
      del l1[::2]
      print(l1)    # ['女神', 'xiao']
      
  • 列表的改

    • # 按照索引改值
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l1[0] = '男神'
      print(l1)          # ['男神', '女神', '吴老师', 'xiao', '闫龙']
      
      l2 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l2[-2] = '周杰伦'
      print(l2)           # ['太白', '女神', '吴老师', '周杰伦', '闫龙']
      
      # 按照切片改(了解)
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l1[2:] = 'fsdag'    # 迭代的方式
      print(l1)           # ['太白', '女神', 'f', 's', 'd', 'a', 'g']
      
      # 按照切片(步长)(了解)
      l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l1[::2] = 'abc'
      print(l1)           # ['a', '女神', 'b', 'xiao', 'c']
      
      l2 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      l2[::2] = 'abcd'
      print(l2)           # 放不进去了, 必须一一对应, 运行错误
      
  • 列表的查

    • # 可索引,可切片(步长)
      # 比如:
      l3 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
      for i in l3:
          print(i)
      

三、列表的嵌套

l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
# 1, 将l1中的'taibai'变成大写并放回原处。
# 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。
# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
# 怎么做呢?

l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
# 1, 将l1中的'taibai'变成大写并放回原处。

print(l1[2].upper(),type(l1[2].upper()))    # TAIBAI <class 'str'>

l1[2] = l1[2].upper()     #  l1[2].upper()  即为  'TAIBAI'
print(l1)                 # [1, 2, 'TAIBAI', [1, 'alex', 3]]


# 2,给小列表[1,'alex',3,]追加一个元素--->'老男孩教育'
print(l1[-1])               # 先找到小列表   # [1, 'alex', 3]
l1[-1].append('老男孩教育')   # 这时的 l1, '老男孩教育'加进去了没有?
print(l1)                   # [1, 2, 'taibai', [1, 'alex', 3, '老男孩教育']]


# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
print(l1[-1][1])       # 先找到小列表   # alex

new_str = l1[-1][1] + 'sb'
l1[-1][1] = new_str
print(l1)              # [1, 2, 'taibai', [1, 'alexsb', 3, '老男孩教育']]

l1[-1][1] = l1[-1][1] + 'sb'    # 简化形式
print(l1)                       # [1, 2, 'taibai', [1, 'alexsb', 3]]

# 另外一种简便方法, 回顾count = count + 1   ----->   # count += 1
l1[-1][1] += 'sb'
print(l1)               # [1, 2, 'taibai', [1, 'alexsb', 3]]



# 练习:
lis = [2, 30, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 将列表lis中的"tt"变成大写(用两种方式)
lis[3][2][1][0] = 'TT'
print(lis)          # [2, 30, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']

lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)            # [2, 30, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']

四、元组 (了解)

  • 只读列表。存大量的数据,可以索引,切片(步长), (100, '太白', True, [1, 2, 3])

  • tu = (100, '太白', True, [1, 2, 3])
    print(tu[0])      # 100
    print(tu[:3])     # (100, '太白', True)
    
    # 只能查看,不能增加删除
    for i in tu:
        print(i)
    
    print(len(tu))       # 获取元素数据   # 4
    
    tu[-1].append(666)   # 元组里的列表,里的元素是可以改的
    print(tu)            # (100, '太白', True, [1, 2, 3, 666])
    
    del tu[2]            # 删除 True  ----> 报错
    print(tu)            # 报错
    
    # # 应用:
    # 应用一:重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中。
    # 应用二:元组的拆包。分别赋值。
    a, b = (1, 2)     # 多一个少一个都不行
    print(a,b)     # 1 2
    # a, b ,c= (1, 2)   # 多一个少一个都不行 ---> 报错
    # a, b = (1, 2, 3)  # 多一个少一个都不行 ---> 报错
    
    # 或者:
    c = (1,2)
    a,b = c
    print(a,b)     # 1 2
    

五、range (了解)

  • 类似于列表,自定制数字范围的数字列表
  • 多与for结合使用
r = range(10)    # 就像[0,1,2,3,4,5,6,7,8,9]列表的容器
                 # 顾头不顾腚
                 # 0 可以默认不写
print(r)         # range(0, 10)
for i in r:
    print(i)     # 0 1 2 3 4 5 6 7 8 9  # 顾头不顾腚

# 索引(了解)
print(r[1])      # 1

for i in range(1, 101):        # 打印1---100数
    print(i)     # 0 1 2 3....100    # 顾头不顾腚

for i in range(2,101,2):   # 引入步长,打印偶数
    print(i)     # 2 4....100       # 顾头不顾腚

for i in range(100,0,-1):   # 引入步长,打印偶数 (倒取)
    print(i)     # 100 99...1

# # 例如:
# 利用for循环,利用range将l1列表的所有索引依次打印出来
l1 = [1, 2, 3, 'alex', '太白']
# for i in range(5):   # 和上面的l1无关,已经数出来了,元素多的数不过来呢?
for i in range(len(l1)):
    print(i)

# 结果:
# 0
# 1
# 2
# 3
# 4

l1 = [1, 2, 3, 'alex', '太白']
for i in range(3):    # 和上面的l1无关,已经数出来了
    pass              # range(3)是0~2, 顾头不顾腚
print(i)      # 2
posted @ 2020-11-04 18:30  jawy  阅读(16)  评论(0)    收藏  举报
回顶部
Document