当前位置:   article > 正文

Python之列表和元组的基本操作(超详细)_列表转元组

列表转元组

一、操作列表元素

列表中的元素是有序存放的,因此可以直接通过索引来访问列表元素。同时列表中的元素是可变的。即不仅列表中的元素值可以修改,列表中的元素个数也是可变的。因此列表中的元素支持修改、添加和删除操作。

1.1 修改元素

格式:列表名【索引】= 新值

 1.2 增加元素

1.2.1 append()方法

 append()方法是列表专属的方法之一,用来在指定的列表尾部,即当前最后一个元素的后面,追加指定新元素。

语法格式:列表名.append(新元素)

1.2.2 insert()方法 

insert()方法允许为新增加的元素指定插入的位置,其中位置用索引表示。

 语法格式为:列表名.insert(索引,新元素)

  1. >>> guests = ['张三','李四','王五','小阿丁']
  2. >>> guests.insert(0,'小红')
  3. >>> guests
  4. ['小红', '张三', '李四', '王五', '小阿丁']
  5. >>> len(guests)
  6. 5

注意:列表每次增加的元素可以是任何类型的。 

  1. >>> play1 = ['小阿丁',18]
  2. >>> play1
  3. ['小阿丁', 18]
  4. >>> play1.append(20)
  5. >>> play1
  6. ['小阿丁', 18, 20]
  7. >>> play1.insert(0,'小红')
  8. >>> play1
  9. ['小红', '小阿丁', 18, 20]

1.3 删除元素 

 1.3.1 del命令

语法格式:del 列表名【索引】 

  1. >>> guests
  2. ['小红', '张三', '李四', '王五', '小阿丁']
  3. >>> del guests[0]
  4. >>> guests
  5. ['张三', '李四', '王五', '小阿丁']

 1.3.2 pop()方法

 语法格式:列表名.pop(索引)      #当缺省指定索引的时候,默认删除最后一个元素

  1. >>> guests
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> guests.pop(1)
  4. '李四'
  5. >>> guests
  6. ['张三', '王五', '小阿丁']
  7. >>> guests.pop()
  8. '小阿丁'
  9. >>> guests.pop()
  10. '王五'

 

 可以看出pop()不仅删除了列表中指定元素,而且返回了被删除的指定元素,这可以供后续使用。

1.3.3 remove()方法 

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

  1. >>> guests
  2. ['小红', '张三', '李四', '张三', '小阿丁']
  3. >>> guests.remove('李四')
  4. >>> guests
  5. ['小红', '张三', '张三', '小阿丁']
  6. >>> guests.remove('张三')
  7. >>> guests
  8. ['小红', '张三', '小阿丁']

 可以看出,当列表中有相同值时,remove()方法删除的是列表中排在最前面的待删除的元素。

二、其他常用操作 

2.1 常用函数 

  1. len() #统计和返回指定列表的长度
  2. in() not in() #判断指定元素是否在列表中
  3. index() #在列表中那个查找指定的元素,若存在则返回指定元素在列表中的索引,若存在多个则返回最小的,若不存在会报错
  4. count() #统计并返回列表中指定元素的个数
  1. >>> guests = ['张三','李四','王五','小阿丁']
  2. >>> '小阿丁' in guests
  3. True
  4. >>> '小红' in guests
  5. False
  6. >>> '小红' not in guests
  7. True
  8. >>>
  9. >>> len(guests)
  10. 4
  11. >>> guests.index('小阿丁')
  12. 3
  13. >>> guests.count('小阿丁')
  14. 1
  15. >>> guests.count('小红')
  16. 0

2.2 操作列表函数 

  1. sort() #列表元素从小到大升序排序,改变了源列表的元素的顺序
  2. sorted() #列表元素从小到大升序排序,生成排序后的副本,不改变原列表的顺序

 注意:sort()方法排序是基于ord()函数得到的编码值进行的。对于数字和英文字符排序,结果是确定的,但是处理中文的时候就有些复杂,因为中文通常会有拼音和笔画两种排序方式,而不同的字符集或采用拼音排序,或采用笔画排序,或采用偏旁部首排序,或混合多种排序方式,从而使得sort()方法对中文的排序结果和预判结果发生偏差。至于如何解决,我会在后面给出。

同时sort()不仅可以升序也可以降序,但是需要增加一个参数,如下图:

sort()方法格式:列表.sort() 

  1. >>> nums = [9,3,8,2,1]
  2. >>> nums.sort()
  3. >>> nums
  4. [1, 2, 3, 8, 9]
  5. >>> nums.sort(reverse = True)
  6. >>> nums
  7. [9, 8, 3, 2, 1]

sorted()函数语法格式:sorted(列表,reverse) 

  1. >>> nums = [9,3,5,1,2,18]
  2. >>> nums
  3. [9, 3, 5, 1, 2, 18]
  4. >>> sorted(nums,reverse = False)
  5. [1, 2, 3, 5, 9, 18]
  6. >>> sorted(nums,reverse = True)
  7. [18, 9, 5, 3, 2, 1]

可以看出sorted()函数只生成排序后的列表副本,不改变原列表中元素的顺序。如果想保存排序后的列表,可以定义一个新的列表将其保存。

三、列表的扩充、复制和删除

3.1 列表的扩充 

3.1.1 “+”运算 

 “+”运算可以将两个列表“加”起来,生成一个新的列表,但是原来的列表并没有发生变化。

  1. >>> list1 = ['小红','小王','小兰']
  2. >>> list1
  3. ['小红', '小王', '小兰']
  4. >>> list2 = ['张三','李四','王五','小阿丁']
  5. >>> list2
  6. ['张三', '李四', '王五', '小阿丁']
  7. >>> list1 + list2
  8. ['小红', '小王', '小兰', '张三', '李四', '王五', '小阿丁']
  9. >>> list1
  10. ['小红', '小王', '小兰']
  11. >>> list2
  12. ['张三', '李四', '王五', '小阿丁']

3.1.2 extend() 方法 

 extend()方法不同于“+”方法,因为“+”必须通过赋值语句才能将结果写入新的列表中,而extend()方法可以直接将新的列表添加至原列表之后。

语法格式为:列表.extend(新列表)

  1. >>> list1
  2. ['小红', '小王', '小兰']
  3. >>> list2
  4. ['张三', '李四', '王五', '小阿丁']
  5. >>> list1.extend(list2)
  6. >>> list1
  7. ['小红', '小王', '小兰', '张三', '李四', '王五', '小阿丁']
  8. >>> list2
  9. ['张三', '李四', '王五', '小阿丁']

3.1.3 “*”运算 

 列表的乘法运算是指将列表中的元素重复多遍。

语法格式:列表*n

  1. >>> list2
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> list2 * 3
  4. ['张三', '李四', '王五', '小阿丁', '张三', '李四', '王五', '小阿丁', '张三', '李四', '王五', '小阿丁']

  

 3.2 列表的复制

 3.2.1 copy() 方法

  1. >>> list2
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> listscopy = list2.copy()
  4. >>> listscopy
  5. ['张三', '李四', '王五', '小阿丁']

3.2.2 列表之间的赋值 

  1. >>> list2
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> list1 = list2
  4. >>> list1
  5. ['张三', '李四', '王五', '小阿丁']

做到这,似乎这两种方法没有任何区别,都能实现列表的复制,那到底有什么区别呢?继续往下进行删除元素的尝试。

  1. >>> list1
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> list1copy = list1.copy()
  4. >>> list1copy
  5. ['张三', '李四', '王五', '小阿丁']
  6. >>> del list1copy[0]
  7. >>> list1copy
  8. ['李四', '王五', '小阿丁']
  9. >>> list1
  10. ['张三', '李四', '王五', '小阿丁']

通过copy()方法得到的新列表在执行删除一个元素的时候,该元素只是从复制的列表中删除,原列表并没有发生任何变化。

  1. >>> list1
  2. ['张三', '李四', '王五', '小阿丁']
  3. >>> list2 = list1
  4. >>> list2
  5. ['张三', '李四', '王五', '小阿丁']
  6. >>> del list2[0]
  7. >>> list2
  8. ['李四', '王五', '小阿丁']
  9. >>> list1
  10. ['李四', '王五', '小阿丁']

但是使用赋值得到的新列表在执行删除一个元素的时候,该元素不仅在复制列表中被删除,在原列表中也被删除。

这说明,列表的copy()方法会生成一个原列表的备份,并将该备份赋值给新列表,这被称为“深拷贝”。而直接的列表赋值,仅仅是让原列表多了一个新的名字,所谓的“新”列表和原列表共享原来的列表内容,这被称为“浅拷贝”。 

3.2.3 列表的切片实现复制

 倘若想复制列表的一部分,那就可以使用切片。

  1. >>> list1
  2. ['李四', '王五', '小阿丁']
  3. >>> list3 = list1[1:3]
  4. >>> list3
  5. ['王五', '小阿丁']

这也是一种“深拷贝”,读者可以自己上机实验。

3.3 列表的删除 

 语法格式:del 列表名

注意del 也可以通过删除所有元素达到清空列表的作用,原列表仍保存,只不过是一个空列表。

  1. >>> list2
  2. ['李四', '王五', '小阿丁']
  3. >>> del list2[:]
  4. >>> list2
  5. []

四、元组

特别注意:元组的元素是不能修改的,可以将元组理解为“不能修改的列表”。 

 元组是一种特殊的列表,很多特性和列表相似。

4.1 转换函数 

 4.1.1 元组与列表之间的转换

 tuple()函数用来将列表转换为元组,list()函数用来将元组转换为列表。

  1. >>> tup1 = ("小阿丁","女",18)
  2. >>> tup1
  3. ('小阿丁', '女', 18)
  4. >>> list1 = list(tup1)
  5. >>> list1
  6. ['小阿丁', '女', 18]
  7. >>> list2 = ['小阿丁','女',20]
  8. >>> list2
  9. ['小阿丁', '女', 20]
  10. >>> tup2 = tuple(list2)
  11. >>> tup2
  12. ('小阿丁', '女', 20)

4.1.2 字符串与列表之间的转换 

  1. >>> name = '小阿丁,小红'
  2. >>> list1 = list(name)
  3. >>> list1
  4. ['小', '阿', '丁', ',', '小', '红']

4.1.3 split()方法  

split()方法是处理字符串的方法,用来根据指定的分隔符拆分字符串,并生成列表。

语法格式为:字符串.split(分隔符)      #分隔符如果缺省的话,默认按照空格拆分字符串

  1. >>> sentence = 'I want to be split by spcaes.'
  2. >>> name = '小阿丁,小红'
  3. >>> sentencelist = sentence.split()
  4. >>> sentencelist
  5. ['I', 'want', 'to', 'be', 'split', 'by', 'spcaes.']
  6. >>> namelist = name.split(',')
  7. >>> namelist
  8. ['小阿丁', '小红']

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号