后台接收列表对象_第九章 列表

一、 列表的特性介绍

16d106dc555fd63a816c23bd1fe7bebb.png
  • 列表和字符串一样也是序列类型的数据
  • 列表内的元素直接用英文的逗号隔开,元素是可变的,所以列表是可变的数据类型,而字符串不是。
  • 列表的元素可以是 Python 中的任何类型的数据对象
    如:字符串、列表、元组、字典、集合、函数
  • 列表中的具有相同值的元素允许出现多次
    [1, 2, 1, 1, 1, 1, 3, 3, 2]

二、 创建列表

dff85615230028e0133ea5978646c12c.png

三、嵌套的列表

列表中可包含 python 中任何类型的元素(对象),当然也可以包括一个或多个列表

li = [['one', 'two', 'three'], [1, 2, 3]]

四、 列表的基本操作

1. 取值

1.1 没有嵌套的列表取值

In [90]: l2 = ['insert', 'append', 'remove', 'pop', 'sort']

In [91]: l2[0]
Out[91]: 'insert'

In [92]: l2[-1]
Out[92]: 'sort'

1.2 嵌套的列表取值

In [93]: l3 = [['one', 'two', 'three'], [1, 2, 3]]

In [94]: l3[0]
Out[94]: ['one', 'two', 'three']

In [95]: ll = l3[0]

In [96]: ll[1]
Out[96]: 'two'

In [97]: l3[0][1]
Out[97]: 'two'

2. 就地修改

可以通过索引直接修改索引对应位置的数据
In [113]: li
Out[113]: ['qfedu.com', 1314, '521']

In [114]: li[0] = '千锋教育'

In [115]: li
Out[115]: ['千锋教育', 1314, '521']

3. 切片

同字符串的切片一样,详情参考字符串教程中的切片

几点简单示例

In [100]: line = 'Size: 8192 MBn'

In [101]: line.split('n')
Out[101]: ['Size: 8192 MB', '']

In [102]: l5 = line.split('n')

In [103]: l5[:-1]
Out[103]: ['Size: 8192 MB']

In [104]: line.split('n')[:-1]   # 可以直接连续操作
Out[104]: ['Size: 8192 MB']

4. 必会方法

len()
方法是一个内置函数,可以统计序列类型的数据结构的长度。

In [108]: li = ['qfedu.com', 1314, '521']

In [109]: len(li)
Out[109]: 3

in
判断元素是否存在于列表中。

In [3]: li = ['qfedu.com', 1314, '521']

In [4]: '521' in li
Out[4]: True

In [5]: 1314 in li
Out[5]: True

In [6]: if 'qfedu.com' in li:
   ...:     print('ok')
   ...:
ok

In [7]:

append() 向列表的最后位置,添加一个元素,只接收一个参数。

In [7]: li.append(521)

In [8]: li
Out[8]: ['qfedu.com', 1314, '521', 521]

insert() 向原列表的指定位置插入一个元素,接收两个参数, 第一个是索引号,第二个是要插入的元素。

In [9]: li.insert(0, 521)

In [10]: li
Out[10]: [521, 'qfedu.com', 1314, '521', 521]

remove() 移除列表中某个指定的元素,没有返回值,并且假如有多个相同值的元素存在,每次只会移除排在最前面的那个元素

In [14]: li.remove(521)

In [15]: li
Out[15]: ['qfedu.com', 1314, '521', 521, 'qf', 'yangge']

pop()

从原列表中删除一个元素,并且把这个元素返回。 接收零个或一个参数,参数是偏移量,int 类型。

# 删除列表中的最后一个元素
In [16]: name = li.pop()

In [17]: name
Out[17]: 'yangge'

In [18]: li
Out[18]: ['qfedu.com', 1314, '521', 521, 'qf']

 # 删除列表中第二个索引号对应的元素,并且返回这个元素,用变量名`n` 接收。  
In [19]: n = li.pop(-2)

In [20]: n
Out[20]: 521

In [21]: li
Out[21]: ['qfedu.com', 1314, '521', 'qf']

index() 获取某个元素在列表中的索引

In [1]: li = [147, 258, 369]

In [2]: li.index(258)
Out[2]: 1

extend() 将一个序列对象的每个元素添加到当前列表中

In [6]: li = [147, 258, 369]

In [7]: l2 = [456, 789]

In [8]: li.extend(l2)

In [9]: li
Out[9]: [147, 258, 369, 456, 789]

In [10]: li.extend('hello')

In [11]: li
Out[11]: [147, 258, 369, 456, 789, 'h', 'e', 'l', 'l', 'o']

5. 循环列表

for-list.py 文件内容如下:

li = ['qfedu.com', 1314, '521', 'qf']

for item in li:
    print(item)

执行

python3 for-list.py

输出结果

qfedu.com
1314
521
qf

6. 深浅拷贝

In [110]: base_count = ['name',['money',100.00]] 

In [111]: xmen = list(base_count) 

In [112]: xpan = base_count.copy() 

In [113]: xmen[1][1] = 20.00 

In [114]: xpan 
Out[114]: ['name', ['money', 20.0]] 

上面的结果起始不是我们想要的,这是由于 python 对于嵌套的数据是应用赋值的

无论外层的列表如何创建新的对象,每个新对象的内部的列表都是引用,不会创建新的对象。

Visualize Python, Java, JavaScript, C, C++, Ruby code execution​www.pythontutor.com

91a81a1dd6286540ac5a7a8f321a339d.png

1dd8b5979a2a4ee3a0a1cbda09f9b905.png

解决办法 使用深拷贝创建一个完整的对象

# 导入模块 
import copy 
base_count = ['name',['money',100.00]] 
# 利用模块中的 copy 方法创建一个全新的对象 
xmen_new = copy.deepcopy(base_count) 
# 利用模块中的 copy 方法创建另一个全新的对象 
xpan_new = copy.deepcopy(base_count) 
# 改变其中一个对象中的值 
xpan_new[1][1] = 50.00 
# 分别打印两个对象 
print(xmen_new) 
print(xpan_new) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值