Python:元组与列表

1.1 元组

    元组用小括号表示,小括号中的元素用“,”隔开。为了区别小括号中是元组元素还是数值,在元组只有一个元素时,在元素后加上“,”来避免困扰。注意元组是不可变动的对象,元组创建后不能变动每个索引所指向的引用对象。用索引号来改变元素的值会报错。例如:

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
tup1 = () #创建空元组
tup1 = (50,)  #只包含一个元素的元组
    1.1.1 元组的相关操作
       1. Unpacking元素,即快速拆分元素,操作如下:
                    
number = (12,13,14)     #packing
a,b,c = number          #unpacking                 
print('a=',a,'b=',b,'c=',c)

>>>a= 12 b= 13 c= 14
       2. 切片运算
       3. 排序,借助sorted()函数来完成
                语法:sorted(tuple [,key][,reverse])
                reverse:默认值为False 升序,若为True则为降序
                key:关键字,若存在根据关键字排序

1.2 列表的基本操作
      列表用中括号表示,与元组基本一致,不过列表的元素时可变的,即可以通过[运算符指定索引编号]来更改某个元素值。
     1.2.1与列表有关的方法
  1. append(x):将元素x加到列表的最后
  2. extend(t):将可迭代对象t加到列表最后  (一般用于给列表插入一个元素)
  3. insert(i,x):将x按索引号i插入列表中  (一般用于两个列表链接)
  4. remove(x):删除x,与del s[i]相同
  5. pop([x]):按索引值i删除元素,并返回,若未给定i则删除并返回最后一个元素
  6. s[i] = x:对索引号i的元素重新赋值
  7. clear():清除所有元素
      列表对象提供的方法:
  1. reverse():将序列元素全部反转
  2. count(x):序列元素x出现的次数
  3. index(x):x第一次出现的索引编号
      1.2.2列表排序
         list.sort(key,reverse =None)
                   key:关键码,可省
                  reverse=None则是升序,若为True则是降序
        注意:元组不能使用sort(),否则会报错。列表也可以使用sorted(),但sorted()和sort()有不同,sorted()是返回一个排序后的副本,原列表并未排序,而sort()是直接对原列表进行排序。

     1.2.3 列表推导式
         Python提供推导式,它可以将一个或多个迭代器聚集在一起,再以for循环作为条件测试。
            语法如下:
                 [表达式 for item in 可迭代的(即列表)]
                 [表达式 for item in 可迭代的if表达式]
              列表推导式:
                    
alist = []#空列表
for itemin 可迭代的:
    if 条件表达式:
        alist.append(item)
                例如:  
                    
numA = []
for item inrange(10,50):
    if(item % 7== 0):
        numA.append(item)

print('10~50被7整除的数为:',numA)

>>>10~50被7整除的数为:[14, 21, 28, 35, 42, 49]
5.3 谈一谈列表复制问题
      列表的复制有“浅复制”和“深复制”两种:
         浅复制有如下几种复制方式:
  1. =赋值语句:    data =[15,23,44];number = data
  2. *运算符
  3. 切片
  4. copy模块的copy()方法:copy.copy(x) 
        深复制的方式就是copy模块中的deepcopy()方法
  
        注意:使用浅复制时copy()方法复制的是对象的引用,即若num2 =num1.copy(),那么改变num1不会影响num2,但是改变num2会影响num1。若采取的是深复制deepcopy()时,num1和num2均是独立的对象引用,无论是改变num1还是num2均不会相互影响。

                 
                  
                                   

猜你喜欢

转载自blog.csdn.net/qq_29599907/article/details/80493278