Python之列表学习笔记

  • 列表list

    列表的定义:
        列表是一种容器
        列表是一种可改变的序列
        列表是由一系列特定元素组成的,元素与元素之间可能没有任何的关联关系,但他们之间有先后顺序关系
    python3中的序列类型
        字符串  str
        列表            list
        元组            tuple
        字节串        bytes
        字节数组    bytearray
    创建空列表的字面值表达式
     []             #创建一个空列表
         L=[] #变量L绑定一个新创建的空列表
    创建非空列表的字面值:
 

        L = [1,2,3,4]#绑定一个新创建的含有4个元素的列表
        L = ['biejing','shanghai','shenzhen']
        L = [1,'two',3.14,'四']
        L = [1,2,[3.1,3.2,3.3],4]


    列表的构造函数list:
        list() 生成一个空的列表,等同于[]
        list(iterable)用可迭代对象创建一个列表
        示例:

  L = list()          #L = []
  L = list("hello")   #L = ['h','e','l','l','o']
  L = list(range(5))  #L = [0,1,2,3,4]


    列表的运算:
        算术运算
        + += * *= (运算规则与字符串的运算规则相同)
        + 用于拼接列表生成新的列表

x = [1,2,3]
y = [4,5,6]
z = x + y #z=[1,2,3,4,5,6]


        +=  用原列表和与右测可迭代对象追加来修改原列表:
            语法:
                列表变量 += 可迭代对象
            示例:

   x = [1,2,3]
   y = [4,5,6]
   x += y    #x = [1,2,3,4,5,6]
   x +="ABC" #x = [1,2,3,4,5,6,A,B,C]
   #+=是改变原来的列表对象,并不会创建新的列表
   x = [1,2,3]
   x +=[4,5,6]
   print(id(x))


            列表是可变的对象,+= 是修改原来的对象
            字符串是不可变的对象,+=是创建新的对象
    *生成重复的列表
     

  x = [1,2]*3 #x = [1,2,1,2,1,2]

    *=生成重复的列表,并改变对变量的绑定
       

x = [1,2,3]
x *= 4  # x = [1,2,3,1,2,3,1,2,3,1,2,3]


    列表的比较运算:
        运算符:
            <  <=  >  >=  ==  !=
                比较规则与字符串的比较规则相同
        示例:

     [1,2,3] < [1,2,4]  #True

     [1,2,3] < [3,2,1] #True

     [1,2,3] == [3,2,1] #False

     [2,3] >=[1,2,3]    #True

     [1,"2"] > ['2',1]  #报错


    列表是可迭代对象
   

 L = [1,3,5,7]
 for x in L:
     print(x)   #1 3 5 7

列表的in /not in运算符
    判断一个值是否存在于列表中,如果存在返回True,否则返回False
    同字符串的in运算符
    用于检查一个值是否存在于列表中,如果存在返回True,否则返回False
    
    示例:

    x = [1,'two',3,'四']
    3 in x       #True
    '3'in x      #False
    10 not in x  #True


列表的索引操作
    语法:
        列表[整数表达式]
    用法:
        与字符串索引的用法相同(分为正向索引和反向索引)
    示例:
     

  x = [1,3,5,7]
  print(x[1])  # 3
  print(x[-1]) # 7


    列表的索引赋值:
        列表是可变的,可以通过索引赋值来改变列表中的元素
        语法:
            列表[整数表达式] = 表达式
        作用:
            改变列表中索引的绑定关系
        示例

     x = [1,2,3,4]
     x[2] = 3.14     #改变了第三个元素的值
     x = [1,2,3.14,4]


列表的切片
    列表[:]
    列表[::]
    列表的切片取值返回一个新的列表,规则等同于字符串切片规则
    示例

   x = [1,2,3,4,5,6,7,8,]
   x[::2]     #[1,3,5,7]
   y = [1::3] #[2,5,8]

    列表的切片赋值
        作用:
            可以改变列表的数据排列,可以插入和修改数据
            可以用切片改变列表的对应元素的值
        语法:
            列表[切片]  = 可迭代对象
        说明:
            切片赋值的赋值运算符(=) 的右侧必须是一个可迭代对象
        示例:

  l = [2,3,4]
  l[0:1] = [1.1,2.2]    # l = [1.1,2.2,3,4]
  l[2:] = [3.3,4.4,5.5] # l[1.1,2.2,3.3,4.4,5.5]
  l[:] = [3,4]          # l = [3,4]
  l[0:0] = [1,2]        # l = [1,2,3,4]
  l = [3,4]
  l[1:1] = [3.14]       # l = [3,3.14,4]
  l = [3,4]
  l[-1:-1] = [5,6]      # l = [3,4,5,6]
  l = [2,3,4]
  l[1,2] = 'ABC'        #l = [2:'A','B','C',4,]
  L = [2,-1,7]
  L[1:2] =range(3,7)    #l =[2,3,4,5,6,7]

        切片的注意事项
            对于步长不等于1的切片赋值,赋值运算符的左侧为可迭代对象
            提供元素的个数一定要等于切片切出的段数
        示例:
       

 l = [1,2,3,4,5,6,7,8,9]
 l[1::2] = ['a','b','c','d']        #[2,'a',4,'b',6,'c',8,'d']


    del 语句 用于删除列表的元素
        语法:
            del列表[索引]
                如:del[0]
            delL列表(切片)
                如:del l[1:2]


    python3中常用于序列的元素:
        len(s)    返回序列的长度
        max(x)  返回序列的最大值元素
        min(x)   返回序列的最小值元素
        sum(x)  返回序列元素的和
        any(x)   真值测试,如果列表中其中一个值为真值则返回True
        all(x)     真值测试,如果列表中所有元素都是真值则返回True

列表推导式 list comprehensioin
    列表推导式是用可迭代对象创建的列表的表达式

    作用:
        用简易方法生成列表
    语法
        [表达式 for 变量 in 可迭代对象]
        或
        [表达式 for 变量 in 可迭代对象 if 真值表达式]
    示例:

  #生成一个数值为1-9的平方的列表
  #[1,4,9,16,....,81]
  l = []
  for i in range(1,10):
      l.append(i**2)
  #推导式实现:
  l = [i**2 for i in range(1,10)]


    用列表推导式生成1-100以内奇数的列表
        结果是:[1,3,5,7,9,....,99]
            l = [i for i in range(1,100,2)]
    练习:
        输入一个开始的整数用begin绑定
        输入一个结束的整数用end绑定
        将从begin开始,到end结束(不包含end)的所有偶数存在于列表中
        并打印出此列表
        (可以使用列表推导式完成,也可以使用循环语句完成)

begin = int(input('开始的数:'))
end = int(input("结束的数:"))
l = [i for i in range(begin,end) if i %2 == 0]
print(l)

    列表推导式的嵌套
        语法:
            [表达式 for 变量1 in 可迭代对象1 if 真值表达式1
                for 变量2 in 可迭代对象2 if 真值表达式2 ...]
        示例:

    #将列表[10,20,30]中的元素与列表[1,2,3]元素分别相乘,将得到的元素放于下一个列表中

    l = [x + y
             for x in [10,20,30]
                 for y in [1,2,3]]
    print(l) #[11,12,13,21,22,23,31,32,33]


练习:
    用字符串'ABC'和字符串'123'生成如下列表
    ['A1','A2','A3','B1','B2','B3','C1','C2','C3']

l = [x + y
        for x in 'ABC'
            for y in '123']
print(l)


    已知有一个字符串:
        s = '100,200300,500,800'
        将其转化为列表,列表的内部是整数

        l = [100,200,300,500,800]


s = '100,200,300,500,800'
l = [int(i) for i in s.split(',')]
print(l)

猜你喜欢

转载自blog.csdn.net/zhangshuaijun123/article/details/82048622