目录

一、列表的创建

1.直接方括号创建

2.range()创建列表

3.list()转换列表

4.列表推导式创建列表

二、列表的删除

三、列表内添加元素

1.lst.insert()

2.lst.append()

3.lst.extend()

四、列表内删除元素

1.lst.remove()

2.lst.pop()

3.del

五、获取列表中的元素

1.下标获取元素

2.切片操作

3.浅拷贝与深拷贝

1).python赋值的详解

2).深拷贝用法

六、列表常用操作符

七、列表其用法

1.lst.count()

2.lst.index()

3.lst.sort()

4.lst.reverse()


一、列表的创建

1.直接方括号创建

lst = list()
lst = []          #创建一个空列表
lst_1 = [0,1,2,3]
lst_2 = ['2','3','4',5]
print(type(lst),type(lst_1),type(lst_2)) #<class 'list'> <class 'list'> <class 'list'>
print(lst,lst_1,lst_2)      #[] [0, 1, 2, 3] ['2', '3', '4', 5]

2.range()创建列表

range(start, stop[, step]) 左闭右开

输出对象为range

'''
range(start, stop[, step]) 左闭右开
'''print(list(range(20)))     #指定输出终点为20(开区间)的整数列,默认起点为0
print(list(range(0,20)))  #指定输出从0-19的整数
print(list(range(3,20,2))) #指定输出从3-19的整数,步长为2
print(list(range(20,3,-2)))  #指定由大到小输出从19-3的整数,步长为-2  (只有由大到小输出步长才能为负,负责输出空列表)for i in range(0,20,2):print(i)

3.list()转换列表

print(list('asjcbwfoef'))        #将字符串对象转换为列表
print(list((1,2,3,4)))       #将tuple元组对象转换为列表
print(list({3, 7, 5}))         #将集合对象转换为列表
print(list(range(1,10,2)))           # 将range对象转换为列表
print(list(map(str, range(10))))       # 将map对象转换为列表
print(list(zip('abcd', [1,2,3,4])))     # 将zip对象转换为列表
print(list(enumerate('Python')))        # 将enumerate对象转换为列表
print(list(filter(str.isdigit, 'a1b2c3d456')))   # 将filter对象转换为列表

4.列表推导式创建列表

data = [num for num in range(10) if num%2==0]
data1 = [(x,y) for x in range(5) for y in range(7)]  #等价于二层循环的嵌套print(data)  #[0, 2, 4, 6, 8]
print(data1)
'''
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (1, 0), (1, 1), (1, 2),
(1, 3), (1, 4), (1, 5), (1, 6), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5),
(2, 6), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 0), (4, 1),
(4, 2), (4, 3), (4, 4), (4, 5), (4, 6)]
'''
#注意:
from random import random
data = [[random() for j in range(5)] for i in range(3)]
'''
也等价于二层的循环,但是先执行i in range(3),将前面的代码分成三份执行,
结果是二维列表,每个元素是包含5个数字的列表
'''
print(data)'''
输出为:
[[0.8853994649551384, 0.5401974504702698, 0.2994441674569889,
0.9354233633069325, 0.32846604905082233], [0.29868955893760585,
0.4944817615807019, 0.04688261440071573, 0.9564456098602425,0.4486649125807983], [0.9832352341323132, 0.9390120222567508,
0.018911101669808472, 0.9156486998542285, 0.95555817499617]]
'''

*注意:

于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的[1,2,3],也有3个指针和3个整数对象。

x = [a] * 4操作中,只是创建4个指向list的引用,所以一旦a改变,x中4个a也会随之改变。

二、列表的删除

del  删除对象

#del
lst = [1,2,3,4]
del lst
#接着打印  print(lst) 会报错  

三、列表内添加元素

1.lst.insert()

#insert(inedx,x) 在列表中index位置的前面插入元素。无返回值
a = [1,2,3]
a.insert(0,0)
print(a)     #[0, 1, 2, 3]
a.insert(4,4)
print(a)     #[0, 1, 2, 3, 4]

2.lst.append()

#append(x) 将元素x追加到列表a的尾部,相当于拼接,无返回值
a = [1,2,3]
b = {4,5,6}
a.append(5)
print(a)  #[1, 2, 3, 5]print(a.append(6))   #输出None,
'''
不能这么用,个人理解是lst.append(x)相当于一种动作,并不会输出什么,
而是在原有a列表上做了改变
'''
a.append(b)    #追加的元素也可以是列表、元组、集合之类的,但追加后是嵌套关系
print(a)     #[1, 2, 3, 5, 6, {4, 5, 6}]

*注意:

如果括号追加的元素是一个列表或元组,append方法会将整个列表或元组作为一个整体追加到列表尾部

a = [1,2,3,4]
a.append([5,6,7,8])
print(a)   #[1, 2, 3, 4, [5, 6, 7, 8]]

3.lst.extend()

'''
extend(L) 将列表/元组/集合/L中所有元素从后面追加到原列表中,
也可以追加字典L的key值到原列表中,无返回值
'''
a = [1,2,3]
l = [4,5,6]
a.extend(l)         #拼接列表
a.extend(tuple(l))    #拼接元组
a.extend(set(l))     #拼接集合
print(a)            #[1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6]l_dict = {4:'hh',5:0,6:'?'}
a.extend(l_dict)    #拼接字典的key值
print(a)       #[1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6]

严格来说 append 是追加,把一个东西整体添加在列表后,而 extend 是扩展,把一个容器里的所有元素添加在列表后。

四、列表内删除元素

1.lst.remove()

#lst.remove(x)  根据值删除元素,删除值为x的元素,后面所有元素集体向前移,无返回值
a = [1,2,3,'hhh','QAQ',[1,'2']]
a.remove([1,'2'])   #值可以是列表/元组/集合/字典等
a.remove('QAQ')    #可以是字符串
a.remove(2)       #可以是整数
print(a)         #[1, 3, 'hhh']

2.lst.pop()

#pop(index) 根据下表删除元素,删除并返回列表中下标为index的值
a = [1,2,3,4,5]
print(a.pop())  #不加参数默认是删除返回最后一个元素,输出 5
print(a.pop(1))  #删除返回下标为1的元素,且后面元素集体向前移动,输出 2
print(a)        #[1, 3, 4]

remove和pop都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。而且remove是只删除,无返回值,而pop是删除后再返回此元素,如果要在删除元素后还能继续使用它,就使用方法pop()

3.del

del var1[,var2 ......] 删除单个或多个对象。如果知道要删除的元素在列表中的位置,可使用del语句删除列表内元素

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x)  # ['Wednesday', 'Thursday', 'Friday']

五、获取列表中的元素

1.下标获取元素

通过下标(索引值)访问元素,下标在左端从0开始,在右端从-1开始。从左往右是从0一直加1,从右往左是从-1一直减一。

  • 通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。
  • 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。
data = list(range(1,20,1))#range左闭右开,数字为1-19,下摆从前往后是0-18
print(data[0])
print(data[18])#从后往前是(-1)-(-19)
print(data[-1])
print(data[-19])'''
结果:
1
19
19
1'''

2.切片操作

[start : stop : step]

获取部分元素

a = list(range(0,20))print(a[:])             #获取所有元素
print(a[:3])
print(a[:])
print(a[0:20])          #从0到20,左闭右开,即0-19
print(a[4:7])           #4-6
print(a[10:20:2])       #10-19,2为步长
print(a[-3:])           #从倒数第三位到最后一位
print(a[-5:-1])         #从倒数第五位到最后一位
print(a[5:1:-1])        #"-1"为步长,即倒着从下标为5的切到下标为1的'''
结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[4, 5, 6]
[10, 12, 14, 16, 18]
[17, 18, 19]
[15, 16, 17, 18]
[5, 4, 3, 2]
'''

3.浅拷贝与深拷贝

[:]  复制列表中的所有元素

1).python赋值的详解

在Python中,用一个变量给另一个变量赋值,其实就是给当前内存中的对象增加一个“标签”而已,这两个变量指向的是同一片内存

lst = [1,2,3]
lst[1] = lst
print(lst)
'''
结果不是[1,[1,2,3],3],而是[1,[...],3]
'''

lst并不是[1,2,3]这个列表对象本身,而是指向它的标签。此条语句相当于创建了一个引用自身的结构,导致lst[1]指向lst本身,最终变成无限循环

所以要实现[1,[1,2,3],3],需要为lst[1]赋值为一个与原列表一样的新列表,才能达到修改原列表的目的且不发生循环引用的现象。这个新列表可以有python的浅拷贝获得

2).深拷贝用法

[:] 或 copy模块的deepcopy()

复制列表中的所有元素,也可以理解为列表从头到尾完整的切片,在不影响原列表的基础上返回与原列表一样的新列表

lst = [1,2,3]
print(lst[:])    #[1,2,3]lst[1] = lst[:]
print(lst)       #[1,[1,2,3],3]lst_1 = lst
lst_2 = lst[:]
print(lst_1)     #[1,2,3]
print(lst_2)     #[1,2,3]lst[0] = 0
print(lst)       #[0,2,3]
print(lst_1)     #[0,2,3]
print(lst_2)     #[1,2,3]  表明浅拷贝的列表不受原列表改变而改变

六、列表常用操作符

  • 等号操作符:==
  • 连接操作符 +
  • 重复操作符 *
  • 成员关系操作符 innot in
lst_1 = [1,2,3]
lst_2 = [4,5,6]print(lst_1 + lst_2)      #连接操作符 +
print(lst_1 * 3)          #重复操作符 *
print(lst_1 == lst_2)     #等号操作符:==
print(1 in lst_1)         #成员关系操作符 in、not in
print(6 not in lst_2)'''
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
False
True
False'''

七、列表其用法

1.lst.count()

list.count(obj)

数量函数,统计某个元素在列表中出现的次数

a = [1,2,2,3,3,3]
print(a.count(2))
print(a.count(3))
print(a.count(4))'''
2
3
0
'''

2.lst.index()

list.index(x[, start[, end]])

从列表中找出某个值第一个匹配项的索引位置,即获取下标

a = [1,2,3,4,6,2,6]
print(a.index(1))
print(a.index(2))  #当元素x在列表中出现多次时,返回最早出现时的下标
print(a.index(6))
print(a.index(6,3,7))  #3和7是切片,取下标为3-6的切片,返回第一个值为6的元素的原始下标'''
0
1
4
4
'''

3.lst.sort()

list.sort(key=None, reverse=False)

排序函数,对原列表进行排序。

#sort()  按照指定规则对列表进行排序,与sorted()一样支持key参数和reverse参数from random import shuffle,samplea = list(range(0,20))
shuffle(a)
print(a)
a.sort()             #默认正序排列
print(a)
print('===========')b = sample(range(1000),10)
print(b)
b.sort(reverse = True)   #加入 reverse 参数,表示反转,由正序变成倒序
b.sort(key = str)      #转换成字符串后排序
print(b)
print('===========')def Second(lst):        #定义获取第二个元素的函数return lst[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=Second)      #key值可以是自定义函数
print(x)x.sort(key=lambda a: a[0])   #也可以是lambda匿名函数
print(x)'''
[0, 15, 7, 14, 6, 16, 8, 19, 5, 12, 18, 10, 11, 13, 2, 4, 3, 9, 1, 17]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
===========
[370, 248, 82, 815, 179, 654, 35, 885, 966, 685]
[179, 248, 35, 370, 654, 685, 815, 82, 885, 966]
===========
[(4, 1), (2, 2), (1, 3), (3, 4)]
[(1, 3), (2, 2), (3, 4), (4, 1)]
'''

*sorted与lst.sort()方法对比

#sorted() 与 lst.sort() 对比
a = sample(range(100),10)
a_sorted = sorted(a)     # sorted() 不能对a本身直接进行修改,但有返回值,#需要打印返回值或者赋值
print(a_sorted)   a = sample(range(100),15)
a.sort()                # sort() 是直接对a本身做了修改,没有返回值,#不能通过 print(a.sort()) 打印
print(a)'''
[9, 11, 13, 14, 15, 18, 30, 45, 60, 84]
[2, 17, 18, 21, 41, 47, 51, 52, 53, 59, 60, 69, 71, 95, 96]
'''

4.lst.reverse()

反转函数,反转列表中元素,注意不是倒序,是反转

from random import shuffle,sampleb = sample(range(100),10)
b.reverse()       # reverse() 只是反转
print(b)'''
[22, 40, 62, 20, 46, 77, 33, 68, 39, 90]
'''

Python入门(二) part1 列表相关推荐

  1. Python 入门笔记6——列表

    Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...

  2. python设置二维列表_Python设置为列表

    python设置二维列表 Python设置为列表 (Python Set to List) Sometimes we have to create a list from the set object ...

  3. python把二维列表转成一维列表

    python把二维列表转成一维列表 先把列表转成numpy数组,然后使用flatten()函数把数组扁平化. 示例代码如下: # !/usr/bin/python # -*- coding: utf- ...

  4. Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化

    Python入门(二)--IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化 我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说 ...

  5. Python生成二维列表

    方法一: 使用np.zeros((m,n)) 方法二: 使用for循环,避免浅拷贝!!! 生成m行n列的二维列表:[[0]*n for _ in range(m) 不能使用b = [ [0] * m] ...

  6. Python入门二(1)

    本周学习笔记来自慕课网python入门 一python介绍 Python(蟒蛇)是Guido Van Rossum(荷兰人) 在1989年的圣诞节发明的 其特点为: 1优雅 2明确 3简单 二Pyth ...

  7. python将二维列表内容写入和读取.csv文件

    python将列表按行写入至.csv文件 # coding:utf-8 import csv list=[[1,2,3,4],[5,6,7,8],[89,55,66666,5],['张三','李四', ...

  8. Python入门2_之列表元组

    学习过程中务必注意:{ },[ ],( )这三个符号的使用 1,序列(符号:[ ]) >>> name = ['quking','gentleman'] >>> n ...

  9. python入门学习之列表list

    一.序列 - 序列是Python中最基本的一种数据结构- 数据结构指计算机中数据存储的方式- 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序 ...

  10. python创建二维列表

    创建二维列表 一.追加生成法 二.赋值生成法 以上就是简单二维数列的生成法,小伙伴们快去试试吧. 今天我们学习创建二维列表的简单方法 一.追加生成法 大概就是说,先弄个盒子在把内容塞进去. 代码如下, ...

最新文章

  1. SugarCRM ListView查询中加入默认条件
  2. 靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...
  3. ThreadLocal小记
  4. 爬虫css选择器,选择属性
  5. 创建总账科目类型会计凭证
  6. mysql show schema_快速入门 · xiaoboluo768/mysql-system-schema Wiki · GitHub
  7. 计算机二级access知识点6,2019年计算机二级ACCESS考试知识点:关系数据模型
  8. leetcode —— 523. 连续的子数组和
  9. apipost提示error:invalid protocol的解决方案
  10. 适时突破[我眼中的戴尔转型]
  11. CodeForces Round #295 Div.2
  12. redis应用场景与最佳实践
  13. [DappReview]2020年第一季度Dapp市场报告
  14. 锐起无盘服务器陈列设置,原创]锐起无盘安装全图文设置,含SCII设置在内
  15. 把oa系统部署到云服务器,oa系统怎么部署到云服务器
  16. v2订阅一键同步自定义混淆
  17. 《数据分析实战》--用R做多元回归分析
  18. sudo unable to resolve host test : Name or service not known
  19. 美国亿万富翁悬赏百万解数学难题
  20. Python实现的通讯录

热门文章

  1. python 删除特定列_pandas删除某一列的方法(drop函数)
  2. 王道考研计算机网络第三章--数据链路层
  3. JS实现30分钟倒计时
  4. VBA 工作表 worksheet.add 方法
  5. 前端网页水印实现方法
  6. appbase_实时图形数据库即服务与Appbase
  7. Android快速开发之appBase——(1).appBase介绍
  8. Ansible自动运维工具
  9. 关于position: sticky的简单用法
  10. 爆笑校园生活——人在校园的日子