第4章 列表

4.1 人人都爱的列表

  1. 列表的定义
    列表是容纳一系列元素的容器
    用[]定义,元素间“,”分隔
    列表可以容纳不同类型元素
  2. 列表索引
    从0开始编号,这个编号称为下标或索引(index)
  3. 获取列表元素个数
    使用len()函数可以获取列表中的元素个数
    如果len()函数括号中提供的是一个字符串,则会返回字符串的字符总数
months = ['January', 'February', 'March', 'April', 'May', 'June',
          'July', 'August', 'September', 'October', 'November', 'December']
print(type(months))
print(len(months))
print(months[0], months[3])

运行结果

<class 'list'>
12
January April

4.2 元素的访问和修改

  • 列表可以容纳不同类型的元素
  • months[-1]代表months列表的最后一个元素,months[-2]代表倒数第2个元素,以此类推


4.3 元素的增加

append()
向列表的末尾增加元素,用数组形式也可以添加多个元素
append() 方法是将参数作为一个元素增加到列表的末尾。

extend()
向列表的末尾增加元素,可以一次添加多个元素,但要用数组形式添加。
extend() 方法则是将参数作为一个列表去扩展列表的末尾。

>>> member.extend(['小甲鱼','小布丁'])
>>> member
['王俊凯', '王源', '易烊千玺', '柏力源', '小甲鱼', '小布丁']

insert()
可以定义添加元素的位置,insert(添加的位置,要添加的元素)
从0开始为第一个

jack = ['10000', 'Jack Ma', 47]
jack.append("CEO")
print("jack list after append:", jack)

jack.insert(2, 'male')
print("jack list after insert at position 2:", jack)

运行结果

March 4
The final element of months list is: December

4.4 元素的删除

remove()
需要知道具体的名字,具体删除
remove()函数从列表中移除遇到的第一个指定值的元素
del 列表名(索引值)
不加索引值,可以删除整个列表
pop()

  • 不加参数,默认删除最后一个
  • 可以赋值
  • 加索引值,指定删除
jack = ['10000', 'Jack Ma', 'male', 47, 47, 'CEO', 47]
sGender = jack.pop(2)
print("jack list after pop(2):", jack)
print("The popped element is:", sGender)

jack.remove(47)
print("jack list after remove(47):", jack)

del jack[1]
print("jack list after del:", jack)

运行结果

jack list after pop(2): ['10000', 'Jack Ma', 47, 47, 'CEO', 47]
The popped element is: male
jack list after remove(47): ['10000', 'Jack Ma', 47, 'CEO', 47]
jack list after del: ['10000', 47, 'CEO', 47]

4.5 列表的嵌套

jack = ['10000', 'Jack Ma', 'male', 47, 'CEO']
mary = ['10001', 'Mary Lee', 'female', 25, 'Secretary']
tom = ['10002', 'Tom Henry', 'male', 28, 'Engineer']
dora = ['10003', 'Dora Chen', 'female', 32, 'Sales']
employees = [jack, mary, tom]
employees.append(dora)
print(employees[2])
print(employees[2][1])

运行结果

['10002', 'Tom Henry', 'male', 28, 'Engineer']
Tom Henry

employees[2]代表这个列表中的第2(0开始数)个元素,即tom。
employees[2][1]则代表tom列表中的第1个元素,也就是姓名,即Tom Henry

4.6 名字绑定

person1 = ['10000', 'Jack Ma', 'male', 47, 'CEO']
person2 = person1
person2[1] = "Tom Henry"
print(person1)
print(person2)

运行结果

['10000', 'Tom Henry', 'male', 47, 'CEO']
['10000', 'Tom Henry', 'male', 47, 'CEO']

person1和person2指向是同一个列表对象!
Python将列表从一个变量赋值到另一个变量(或者函数参数传递)时,并不会拷贝列表的复制品,而是选择将列表关联到另一个变量/名字。

4.7 元素顺序

4.7.1排序

sort()函数是列表的成员函数,其作用是将列表内的元素按递增(非递减)排序; 如果加上参数reverse=True,则按递减(非递增)排序
names.sort()会导致names内元素的顺序被改变;

names = ['jack', 'mary', 'tom', 'dorothy', 'peter']
names.sort()  # 默认按字母排序
print(names)

names.sort(key=len) # 根据长度排序
print("sort by len:", names)

scores = [82, 66, 66, 93, 24, 15, 77.8]
scores.sort(reverse=True)
print(scores)

运行结果

['dorothy', 'jack', 'mary', 'peter', 'tom']
sort by len: ['tom', 'jack', 'mary', 'peter', 'dorothy']
[93, 82, 77.8, 66, 66, 24, 15]

sorted()函数返回排好序的新列表,同时保持原列表不变。
sorted()函数也可以使用reverse及key参数。
Sorted()函数是内置函数

names = ['jack', 'mary', 'tom', 'dorothy', 'peter']
namesSorted = sorted(names)
print("names: ", names)
print("namesSorted: ", namesSorted)

运行结果

names:  ['jack', 'mary', 'tom', 'dorothy', 'peter']
namesSorted:  ['dorothy', 'jack', 'mary', 'peter', 'tom']

4.7.2倒序
names.reverse()函数将原有的列表内元素顺序倒过来,不会对列表排序

name = ['jack', 'mary', 'tom', 'dorothy', 'peter']
name.reverse()
print(name)

运行结果

['peter', 'dorothy', 'tom', 'mary', 'jack']

4.8 for循环遍历

  • 格式
    for <循环变量> in <遍历数据集>:
    <语句块>
dummy = ['jack', 5, False, 3.1415926, 'mary', ["A", "B"]]
for x in dummy:
    print(x)
    print(type(x))
print("This line does not belong to for loop.")  

运行结果

jack
<class 'str'>
5
<class 'int'>
False
<class 'bool'>
3.1415926
<class 'float'>
mary
<class 'str'>
['A', 'B']
<class 'list'>
This line does not belong to for loop.

for循环将dummy列表视为一个集合,集合内有多少个元素,循环体(第4和5行)就重复多少次

4.9 数值列表

4.9.1 range函数

range()函数可以用于创建一个“整数列表”

  • range(x)生成一个[0,x)区间内的整数列表
  • range(x,y)生成一个[x,y)区间内的整数列表
  • range(x,y,z),x,y表示取值范围为[x,y),z表示列表相邻元素间的间隔
print("output of range(5):")
for i in range(5):
    print(i)

print("output of range(2,5):")
for x in range(2, 5):
    print(x)

print("output of range(2,5):")
for y in range(2, 5, 2):
    print(y)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容