2.列表

1.列表数据类型

  “列表”是一个值,它包含多个值构成的序列。
  术语“列表值”指的是列表本身(它作为一个值,可以保存在变量中,或传递给函数,像所有其他值一样),而不是指列表值之内的那
些值。列表值看起来像这样:['cat', 'bat', 'rat', 'elephant']。就像字符串值用引号来标记字符串的起止一样,列表用左方括
号开始,右方括号结束,即[ ]。列表中的值也称为“表项”。表项用逗号分隔。

2.切片

spam = ['cat', 'bat', 'rat', 'elephant']
spam[1:4]:是一个列表的切片。
在一个切片中,第一个整数是切片开始出的下标。第二个整数是切片结束处的下标。
切片向上增长,直到第二个下标的值,但不包括它。切片求值为一个新的列表值。
  >>>spam[0:4]
  ['cat', 'bat', 'rat', 'elephant']
  >>>spam[1:3]
  [ 'bat', 'rat']
  >>>spam[0:1]
  ['cat']
  >>>spam[0:-1]
 ['cat', 'bat', 'rat']
  作为快捷方式,可以省略切片中冒号两边的一个下标或两个下标。省略第一个下标
  相当于使用0,或列表的开始。省略第二个下标相当于使用列表的长度,以为这切片直到列表的末尾。
  >>>spam[:2]
  ['cat', 'bat']
  >>>spam[1:]
   ['bat', 'rat', 'elephant']
  >>>spam[:]
   ['cat', 'bat', 'rat', 'elephant']

3.用len()可以取得列表的长度

  len()函数将返回传递给它的列表值得个数,就像它能计算字符串中字符的个数一样(len('abc') 返回 3)
  >>>len(spam)
  4

4.用下标改变列表中的值

  >>>spam[1] = 'aaa'
  >>>spam
  ['cat', 'aaa', 'rat', 'elephant']
  >>>spam[2] = spam[1]
  >>>spam
  ['cat', 'aaa', 'aaa', 'elephant']
  >>>spam[-1] = 12345
  >>>spam
  ['cat', 'aaa', 'rat',12345]

5.列表连接和列表复制

  + 操作符可以连接两个列表,得到一个新列表,就像它将两个字符串合并成一个新的字符串。
  * 操作符可以用于一个列表和一个整数,实现列表的复制。
  >>>[1, 2, 3] + ['A', 'B', 'C']
  [1, 2, 3, 'A', 'B', 'C']
  >>> ['A', 'B', 'C'] * 3
  ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C']

6.用del语句从列表中删除值

  del 语句将删除列表中下标处的值,表中被删除值后面的所有值,都将向前移动一个下标。
  >>>spam =  ['cat', 'bat', 'rat', 'elephant']
  >>>del spam[2]
  >>>spam
  ['cat', 'bat', 'elephant']

7.列表用于循环

  >>>for i in [0, 1, 2, 3]:
              print(i)
  0
  1
  2
  3
  在每次迭代中,让变量一次设置为列表中的值。
  一个常见的Python技巧,是在for循环中使用range(len(someList)), 迭代列表的每一个下标。例如:
  >>>supplies = ['pens', 'staplers', 'flame-throwers', 'binders']
  >>>for i in range(len(supplies)):
                  print('Index ' + str(i) + ' in supplies is ' + supplies[i])
  Index 0 in supplies is pens
  Index 1 in supplies is staplers
  Index 2 in supplies is flame-throwers
  Index 3 in supplies is binders

8.in 和 not in 操作符

    利用in 和 not in 操作符可以确定一个值是否在列表中。像其他操作符一样, in 和 not in 用在表达式中,连接两个值:
  一个是要在列表中查找的值, 一个是待查找的列表。返回值为布尔型。
  >>>spam = ['hello', 'hi', 'howdy', 'heyes']
  >>>'cat' in spam
  False
  >>>'howdy' not in spam
  Flase

9.多重赋值技巧

  在一行代码中,可以用列表为多个变量赋值。例如:
  >>>cat = ['fat', 'black', 'loud']
  >>>size, color, disposition = cat
  >>> size
  'fat'
  >>> color
  'black'
  >>> disposition
  'loud' 
  变量的数目和列表的长度必须严格相等,否则Python将给出ValueError:
  >>>cat = ['fat', 'black', 'loud']
  >>>size, color, disposition, name = cat
    Traceback (most recent call last):
    File "<pyshell#55>", line 1, in <module>
      size, color, disposition, name = cat
    ValueError: not enough values to unpack (expected 4, got 3)

10.列表中的增强赋值操作(+=、*=)

+=操作符也可以完成字符和列表的连接,*=操作符可以完成字符串和列表的复制
>>>spam = 'Hello'
>>>spam += 'World'
>>>spam
'HelloWorld'
>>>bacon = ['Zophie']
>>>bacon *= 3
>>>bacon
['Zophie', 'Zophie', 'Zophie']

11.方法

1.用index()方法在列表中查找值

在index()方法中传入一个值,如果该值在列表中,就返回它的下标。如果不在,Python就报ValueError.
>>>spam = ['hello', 'hi', 'howdy', 'heyas']
>>>spam.index('hi')
1
如果列表中存在重复的值,就返回它第一次出现的下标。
>>>spam = ['hello', 'hi', 'howdy', 'hello']
>>>spam.index('hello')
 0

2.用append()和insert()方法在列表中添加值

>>>spam = ['cat', 'dog', 'bat']
>>>spam.append('moose')
>>>spam
['cat', 'dog', 'bat', 'moose']
append()方法是将参数添加到列表的末尾。
inset()方法可以在列表任意下标处插入一个值。inset()方法的第一个参数是新值的下标,第二个参数是要插入的新值。
>>> spam = ['cat', 'dog', 'bat']
>>> spam.insert(1, 'chicken')
>>> spam
['cat', 'chicken', 'dog', 'bat']

3.用remove()方法从列表中删除值

给remove()方法传入一个值, 它将从被调用的列表中删除。
>>> spam =  ['cat', 'bat', 'rat', 'elephant']
>>> spam.remove('bat')
>>> spam
['cat', 'rat', 'elephant']
如果试图删除列表中不存在的值, 将导致ValueError错误
>>> spam =  ['cat', 'bat', 'rat', 'elephant']
>>> spam.remove('chicken')
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    spam.remove('chicken')
ValueError: list.remove(x): x not in list
如果该值在列表中出现了多次, 只有第一次出现的值会被删除。
>>> spam =  ['cat', 'bat', 'rat', 'cat', 'bat', 'rat']
>>> spam.remove('cat')
>>> spam
['bat', 'rat', 'cat', 'bat', 'rat']

**注**:如果知道想要删除的值在列表中的下标,用del语句删除,例如: del spam[2]
    如果知道想要从列表中删除的值,用remove()方法。例如:spam.remove('cat')

4.用sort()方法将列表中的值排序

数值的列表或者字符串的列表, 能用sort方法排序。
>>> spam = [2, 5, 3.14, 1, 7]
>>> spam.sort()
>>> spam
[1, 2, 3.14, 5, 7]
>>> spam = ['ants', 'cats', 'dogs', 'badgers', 'elephants']
>>> spam.sort()
>>> spam
['ants', 'badgers', 'cats', 'dogs', 'elephants']

也可以指定reverse关键字为True, 让sort()按逆序排列。
>>> spam.sort(reverse = True)
>>> spam
['elephants', 'dogs', 'cats', 'badgers', 'ants']

不能对既有数字又有字符串的列表进行排序,因为Python不知道如何比较它们,报TypeError
>>> spam = [1,3,2,4,'alice','bob']
>>> spam.sort()
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    spam.sort()
TypeError: '<' not supported between instances of 'str' and 'int'

sort()方法对字符串排序时, 使用"ASCII字符顺序", 而不是实际的字典顺序。这意味着大写字母排在小写字母之前。因此排序时,
小写字母a在大写字母Z之后。
>>> spam = ['Alice', 'ants', 'Bob', 'badgers', 'Carol', 'cats']
>>> spam.sort()
>>> spam
['Alice', 'Bob', 'Carol', 'ants', 'badgers', 'cats']
如果需要按照普通的字典顺序来排序的话,就在sort()方法调用时,将关键字参数key设置为str.lower转换为小写进行比较。
>>> spam = ['a', 'z', 'A', 'Z']
>>> spam.sort(key=str.lower)
>>> spam
['a', 'A', 'z', 'Z']
这将导致sort()方法将列表中所有的表项当成小写,但实际上并不会改变它们在列表中的位置。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容