Python入门(二) part1 列表
目录
一、列表的创建
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] 表明浅拷贝的列表不受原列表改变而改变
六、列表常用操作符
- 等号操作符:
==
- 连接操作符
+
- 重复操作符
*
- 成员关系操作符
in
、not 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 列表相关推荐
- Python 入门笔记6——列表
Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...
- python设置二维列表_Python设置为列表
python设置二维列表 Python设置为列表 (Python Set to List) Sometimes we have to create a list from the set object ...
- python把二维列表转成一维列表
python把二维列表转成一维列表 先把列表转成numpy数组,然后使用flatten()函数把数组扁平化. 示例代码如下: # !/usr/bin/python # -*- coding: utf- ...
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
Python入门(二)--IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化 我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说 ...
- Python生成二维列表
方法一: 使用np.zeros((m,n)) 方法二: 使用for循环,避免浅拷贝!!! 生成m行n列的二维列表:[[0]*n for _ in range(m) 不能使用b = [ [0] * m] ...
- Python入门二(1)
本周学习笔记来自慕课网python入门 一python介绍 Python(蟒蛇)是Guido Van Rossum(荷兰人) 在1989年的圣诞节发明的 其特点为: 1优雅 2明确 3简单 二Pyth ...
- python将二维列表内容写入和读取.csv文件
python将列表按行写入至.csv文件 # coding:utf-8 import csv list=[[1,2,3,4],[5,6,7,8],[89,55,66666,5],['张三','李四', ...
- Python入门2_之列表元组
学习过程中务必注意:{ },[ ],( )这三个符号的使用 1,序列(符号:[ ]) >>> name = ['quking','gentleman'] >>> n ...
- python入门学习之列表list
一.序列 - 序列是Python中最基本的一种数据结构- 数据结构指计算机中数据存储的方式- 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序 ...
- python创建二维列表
创建二维列表 一.追加生成法 二.赋值生成法 以上就是简单二维数列的生成法,小伙伴们快去试试吧. 今天我们学习创建二维列表的简单方法 一.追加生成法 大概就是说,先弄个盒子在把内容塞进去. 代码如下, ...
最新文章
- SugarCRM ListView查询中加入默认条件
- 靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...
- ThreadLocal小记
- 爬虫css选择器,选择属性
- 创建总账科目类型会计凭证
- mysql show schema_快速入门 · xiaoboluo768/mysql-system-schema Wiki · GitHub
- 计算机二级access知识点6,2019年计算机二级ACCESS考试知识点:关系数据模型
- leetcode —— 523. 连续的子数组和
- apipost提示error:invalid protocol的解决方案
- 适时突破[我眼中的戴尔转型]
- CodeForces Round #295 Div.2
- redis应用场景与最佳实践
- [DappReview]2020年第一季度Dapp市场报告
- 锐起无盘服务器陈列设置,原创]锐起无盘安装全图文设置,含SCII设置在内
- 把oa系统部署到云服务器,oa系统怎么部署到云服务器
- v2订阅一键同步自定义混淆
- 《数据分析实战》--用R做多元回归分析
- sudo unable to resolve host test : Name or service not known
- 美国亿万富翁悬赏百万解数学难题
- Python实现的通讯录