来源:python中国网 时间:2019-06-04

  场景

  前面学习的字符串可以用来存储一串信息,继续想一想,怎样存储一个网站所有用户昵称呢?

  定义100个变量,每个变量存放一个昵称?还是定义一个长长的字符串含有所有昵称?当然有更好的办法——列表!

  一:列表格式及创建:

   1. 一维列表

       1) 创建一个空列表

       2)创建自定义的列表

       比C语言的数组强大的地方在于列表中的元素可以是不同类型的

   2. 多维列表(列表嵌套)

   3. 列表推导式创建列表

# ‐*‐ coding: utf‐8 ‐*‐
# 空列表
print('以下是空列表')
list1 = list()
list2 = []
list3 = ''.split()
print(list1,list2,list3)  #可以一起打印出来


# 自定义列表,每个列表元素之间是使用英文逗号隔开的
print('以下是自定义列表')
list1 = [1,2,3]
list2 = ['a', 'b', 'c']
list3 = [1, '2', 'a', 4.5, '大师']
list4 = "abcd".split()
list5 = list('1234abcd')
print(list1,list2,list3,list4,list5)

# 多维列表
print('以下是多维列表')
schoolNames = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]
print(schoolNames)

# 列表推导式
print('以下是列表推导式')
list1 = [x for x in range(5)]
print(list1)
D:installpython3python.exe D:/pyscript/python3_script/test66.py
以下是空列表
[] [] []
以下是自定义列表
[1, 2, 3] ['a', 'b', 'c'] [1, '2', 'a', 4.5, '大师'] ['abcd'] ['1', '2', '3', '4', 'a', 'b', 'c', 'd']
以下是多维列表
[['北京大学', '清华大学'], ['南开大学', '天津大学', '天津师范大学'], ['山东大学', '中国海洋大学']]
以下是列表推导式
[0, 1, 2, 3, 4]

Process finished with exit code 0


  二 列表访问
 

# ‐*‐ coding: utf‐8 ‐*‐

# 一位列表访问
print('以下是一维列表访问')
list1 = [1,'a',3]
print(list1[0],list1[1])

# 多维列表访问
print('以下是多维列表访问')
schoolNames = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]
print(schoolNames[0][1])

# for循环遍历访问
print('以下是for循环访问')
for i in list1:
    print(i)

# while循环遍历访问
print('以下是while循环遍历')
length = len(list1)
num = 0
while num < length:
    print(num)
    num+=1

# 利用pop方法
print('以下是pop方法')
list1 = [1, 2, 3, 4, 5]
a = list1.pop()
print(a)
D:installpython3python.exe D:/pyscript/python3_script/test66.py
以下是一维列表访问
1 a
以下是多维列表访问
清华大学
以下是for循环访问
1
a
3
以下是while循环遍历
0
1
2
以下是pop方法
5

Process finished with exit code 0


  三:列表常见操作

  1. 增加元素:

      append:追加元素

      extend:另一个集合中的元素逐一添加到列表中

      insert:指定插入

  2. 修改元素:

      根据下标确定

  3. 删除元素:

      del:根据下标进行删除

      pop:删除最后一个元素

      remove:根据元素的值进行删除

  4. 查找元素:

      in,not in

      python中查找的常用方法为:

      in(存在),如果存在那么结果为true,否则为false

      not in(不存在),如果不存在那么结果为true,否则false

   5.  index,count

      index和count与字符串中的用法相同
 

# ‐*‐ coding: utf‐8 ‐*‐

# 追加元素
print('以下是追加元素--append')
list1 = [1,2]
list1.append('lao wang')
print(list1)

print('以下是指定位置追加元素--insert')
list2 = [1,2]
list2.insert(1,'lao wang ')
print(list2)

print('以下是把一个列表元素扩展到另一个列表--extend')
list1 = [1,2,3,4]
list2 = ['lao wang','lao zhang']
list1.extend(list2)
print(list1)
print('-----------------------------------------------')
# 修改元素
print('以下是通过下标修改')
list1 = [1,2,3]
list1[0] = 'a'
print(list1)

print('以下是切片修改')
list1 = [1,2,3]
list1[0:2] = 'aaa'
print(list1)

print('---------------------------------------------------------')
# 删除元素
print('以下是通过下标删除')
starName = ['吴京','陈龙','鹿晗','李连杰']
del starName[2]
print(starName)

print('以下是pop默认删除最后一个元素')
starName = ['吴京','陈龙','鹿晗','李连杰']
starName.pop()
starName.pop(0) # 也可以指定下标删除
print(starName)

print('以下是remove删除指定元素')
starName = ['吴京','孙红雷','鹿晗','李连杰']
starName.remove('鹿晗')
print(starName)

print('--------------------------------------------')
print('以下是in not in的使用')
list1 = [1,2,3,'a','a','b','c']
if 1 in list1:
    print('yes')
else:
    print('NO')
print('-----------------------------')
print('index count 返回首次出现的位置,统计出现次数')
print(list1.index('a'))
print(list1.count('a'))
D:installpython3python.exe D:/pyscript/python3_script/test66.py
以下是追加元素--append
[1, 2, 'lao wang']
以下是指定位置追加元素--insert
[1, 'lao wang ', 2]
以下是把一个列表元素扩展到另一个列表--extend
[1, 2, 3, 4, 'lao wang', 'lao zhang']
-----------------------------------------------
以下是通过下标修改
['a', 2, 3]
以下是切片修改
['a', 'a', 'a', 3]
---------------------------------------------------------
以下是通过下标删除
['吴京', '陈龙', '李连杰']
以下是pop默认删除最后一个元素
['陈龙', '鹿晗']
以下是remove删除指定元素
['吴京', '孙红雷', '李连杰']
--------------------------------------------
以下是in not in的使用
yes
-----------------------------
index count 返回首次出现的位置,统计出现次数
3
2

Process finished with exit code 0


  四 列表排序:(sort,reverse)


       sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

  reverse方法是将list逆置。
 

# ‐*‐ coding: utf‐8 ‐*‐

a = [1, 4, 2, 3]
a.reverse()
print(a)

a.sort()
print(a)

a.sort(reverse=True)
print(a)
D:installpython3python.exe D:/pyscript/python3_script/test66.py
[3, 2, 4, 1]
[1, 2, 3, 4]
[4, 3, 2, 1]

Process finished with exit code 0


  五 列表切片:

 

  和字符串用法一致(自行尝试)

 

  [:]得到整个列表中的所有元素

 

  [:end]得到从开始到end-1的所有元素

 

  [start:]得到从start开始到结束的所有元素

 

  [start:end]得到从start到end-1的所有元素

 

  [start:end:step]从start到end中每隔step取一个元素

 

  六 操作符+ *:
 

操作 结果
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6]
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!']

 

  
  七 列表高级操作(先知道这么回事,看不懂没关系):
 

函数 说明
sum(iterable) 将迭代对象中的每个数进行相加,迭代对象的元素必须是数字组成的,不能是字 符串
zip(seq1 [, seq2 [...]]) 返回一个枚举对象(可迭代),对象中的每个值由元素的索引以及元素值组成的元组
enumerate(iterable[,start]) 返回一个枚举对象(可迭代),对象中的每个值由元素的索引以及元素值组成的元组
map(function,seq[,...]) 将seq中的每个元素都作为function的参数,最后返回一个列表。如果队列不止一 个,那么每个队列就代表一个参数(比如有两个队列,那么函数必须要有两个参 数接收才行),如果每个队列的元素个数不一样,那么缺少的元素就会以None赋 值。