python列表

python面试1-30题

泪湿孤枕 提交于 2020-03-30 06:25:17
1、一行代码实现1--100之和 利用sum()函数求和 2、如何在一个函数内部修改全局变量 利用global 修改全局变量 3、列出5个python标准库 os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间 4、字典如何删除键和合并两个字典 del和update方法 5、谈下python的GIL GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。 多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大 6、python实现列表去重的方法 先通过集合去重,在转列表 7、fun(*args,**kwargs)中的*args,**kwargs什么意思? 8、python2和python3的range(100)的区别 python2返回列表,python3返回迭代器,节约内存 9、一句话解释什么样的语言能够用装饰器?

python将某个列表按元素值分成多个子列表

回眸只為那壹抹淺笑 提交于 2020-03-28 04:49:22
1. 将原列表排序,当相邻元素不同时,对原列表进行切片。 def cutList1(orList): orList.sort() # 列表排序。默认从小到大 newList = [] # 空列表 n = 0 # 每次切片的起点 for k in range(len(orList)): if orList[k] == orList[-1]: # 由于排过序,则当orList[k]等于列表最后一个元素值时,可以切片后退出循环 newList.append(orList[n:]) # 从orList[k]取到最后 break # 退出循环 if orList[k] != orList[k+1]: # 由于排过序,相邻元素不等时,就表示切子列表的时候到了 subList = orList[n:k+1] # 切片 newList.append(subList) n = k+1 # n用于储存每次切片的起点 return newListmyList1 = [4, 2, 1, 2, 2, 1, 1, 5, 6, 5, 4]print (cutList1(myList1)) # [[1, 1, 1], [2, 2, 2], [4, 4], [5, 5], [6]]2. set去重先,之后计算每个元素在原列表的个数,接着直接按每个元素的个数生成新列表,最后放在一个大列表中 def cutList2

day13匿名函数

被刻印的时光 ゝ 提交于 2020-03-27 20:57:21
补充知识点: def func(*args): for i in args: for j in i: yield i print(list(func('asdf',(1,2,3)))) #list可以将生成器中的所有元素添加到列表中。 #简化上述函数: def func(*args): for i in args: yield from i #优化了内层循环,提高了运行效率。 匿名函数(用lambda构建):一语句函数,比较简单的函数。形式:lambda 参数 : 返回值 def func(a,b): return a+b #构建匿名函数: func1 = lambda a,b:a+b print(func1(1,2)) lambda 参数 : 返回值:lambda后直接加形参,形参加多少都可以,但一般只用位置参数,参数之间需要用”,“隔开。 #例1:接受一个可切片的数据,以元祖形式返回索引位0与2的对应元素 func = lambda a:(a[0],a[2]) #例2:接收两个int参数,将较大的数据返回。 func = lambda a,b:a if a>b else b 内置函数: int():将字符串类型转换为int类型;取整(舍尾法) float():将int和str转换为float。 list():将一个可迭代对象转换成列表 tuple():将一个可迭代对象转换成元组

Python list列表修改元素

若如初见. 提交于 2020-03-27 17:45:30
Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。 修改单个元素 修改单个元素非常简单,直接对元素赋值即可。请看下面的例子: nums = [ 40 , 36 , 89 , 2 , 36 , 100 , 7 ] nums [ 2 ] = - 26 #使用正数索引 nums [- 3 ] = - 66.2 #使用负数索引 print (nums ) 运行结果: [40, 36, -26, 2, -66.2, 100, 7] 使用索引得到列表元素后,通过 = 赋值就改变了元素的值。 修改一组元素 Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。 下面的代码演示了如何修改一组元素的值: nums = [ 40 , 36 , 89 , 2 , 36 , 100 , 7 ] #修改第 1~4 个元素的值(不包括第4个元素) nums [ 1 : 4 ] = [ 45.25 , - 77 , - 52.5 ] print (nums ) 运行结果: [40, 45.25, -77, -52.5, 36, 100, 7] 如果对空切片(slice)赋值

Python线性数据结构

别说谁变了你拦得住时间么 提交于 2020-03-27 02:37:47
python线性数据结构 目录 1 线性数据结构 2.内建常用的数据类型 2.1 数值型 2.2 序列(sequence) 2.2.1 list 列表 2.2.2 tuple 元组 2.2.3 string 字符串 2.2.4 bytes 字节 2.2.5 bytearray 字节数组 <center>码好python的每一篇文章.</center> 1 线性数据结构 本章要介绍的线性结构:list、tuple、string、bytes、bytearray。 线性表:是一种抽象的数学概念,是一组元素的序列的抽象,由有穷个元素组成(0个或任意个)。 线性表又可分为 顺序表和链接表。 顺序表:一组元素在内存中有序的存储。列表list就是典型的顺序表。 链接表:一组元素在内存中分散存储链接起来,彼此知道连接的是谁。 对于这两种表,数组中的元素进行查找、增加、删除、修改,看看有什么影响: 查找元素 对于顺序表,是有序的在内存中存储数据,可快速通过索引编号获取元素,效率高。。 对于链接表是分散存储的,只能通过一个个去迭代获取元素,效率差。 增加元素 对于顺序表,如果是在末尾增加元素,对于整个数据表来说没什么影响,但是在开头或是中间插入元素,后面的所有元素都要重新排序,影响很大(想想数百万或更大数据量)。 对于链接表,不管在哪里加入元素,不会影响其他元素,影响小。 删除元素 对于顺序表

Python线性数据结构

倖福魔咒の 提交于 2020-03-27 02:14:02
3 月,跳不动了?>>> python线性数据结构 [TOC] <center>码好python的每一篇文章.</center> 1 线性数据结构 本章要介绍的线性结构:list、tuple、string、bytes、bytearray。 线性表:是一种抽象的数学概念,是一组元素的序列的抽象,由有穷个元素组成(0个或任意个)。 线性表又可分为 顺序表和链接表。 顺序表:一组元素在内存中有序的存储。列表list就是典型的顺序表。 链接表:一组元素在内存中分散存储链接起来,彼此知道连接的是谁。 对于这两种表,数组中的元素进行查找、增加、删除、修改,看看有什么影响: 查找元素 对于顺序表,是有序的在内存中存储数据,可快速通过索引编号获取元素,效率高。。 对于链接表是分散存储的,只能通过一个个去迭代获取元素,效率差。 增加元素 对于顺序表,如果是在末尾增加元素,对于整个数据表来说没什么影响,但是在开头或是中间插入元素,后面的所有元素都要重新排序,影响很大(想想数百万或更大数据量)。 对于链接表,不管在哪里加入元素,不会影响其他元素,影响小。 删除元素 对于顺序表,删除元素和增加元素有着一样的问题。 对于链接表,不管在哪里删除元素,不会影响其他元素,影响小。 修改元素 对于顺序表,可快速通过索引获取元素然后进行修改,效率高。 对于链接表,只能通过迭代获取元素然后进行修改,效率低。 总结

zip() 函数

时光怂恿深爱的人放手 提交于 2020-03-26 23:39:41
用于将可迭代的对象作为参数(可为多个),将对象中对应的元素打包成一个个元组,然后返回这些元组组成的列表(但再 python 3 中为了减少内存,已经改成返回的是一个对象,如需展示列表,需手动 list() 转换) 另外可利用 * 号操作符,将元组解压为列表 实例: a = [1, 2, 3] b = [0, 9, 8, 7] c = zip(a, b) # <zip object at 0x2544603bbc8> c = list(zip(a, b)) # [(1, 0), (2, 9), (3, 8)] 当长度不一时,按最短的算 d = list(zip(*c)) # [(1, 2, 3), (0, 9, 8)] 来源: https://www.cnblogs.com/alivinfer/p/12577559.html

python:入门到实践书籍学习(二)

巧了我就是萌 提交于 2020-03-26 18:56:07
第3、4章 列表   在 Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。对于其中的元素类型并不做限制。    列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉 Python 即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。下标以0开始。    要访问列表的任何元素,都可将其位置减 1 ,并将结果作为索引。例如,要访问第四个列表元素,可使用索引 3 。若时索引值为负则倒序获取, 通过将索引指定为 -1 ,可让 Python 返回最后 一个列表元素。 test_list = [1,2,3,4,5,6] # 获取下标为0的列表元素 print(test_list[0]) # 获取下标为2的列表元素 print(test_list[2]) # 获取下标为4的列表元素 print(test_list[4]) ''' 输出结果 1 3 5 ''' 列表访问   可以像使用变量一样使用列表的值 bicycles = ['trek', 'cannondale', 'redline', 'specialized'] message = "My first bicycle was a " + bicycles[0].title() + "." print(message)   列表的添加删除与修改:      要修改列表元素

python基础学习day12 生成器与推导式

老子叫甜甜 提交于 2020-03-26 18:07:01
补充:函数不能改变全局不可变的变量,可变变量仍然可改变。 l1 = [1,2] def a(l1): l1.pop(1) a(l1) print(l1) 生成器 生成器:python社区把生成器与迭代器看成同一种,生成器的本质就是迭代器。唯一的区别是:生成器是我们自己用python代码构建的数据结构,迭代器都是python提供的,或者转化的。 获取生成器的方法: 生成器函数 生成器表达式 python内部提供的。 生成器函数 获取生成器,yield: def func(): print(1) print(3) yield 5 print(func) #<function func at 0x000001A3CCA04438> 仍然是一个函数 ret = func() print(ret) #<generator object func at 0x000002471A631D48> #generator object#生成器对象 def func(): print(3) yield 5 ret = func() print(next(ret)) #3 5 #一个next对一个yield的返回值 def func(): print(3) yield 5 yield 7 print(next(func())) #3 5 yield与return return

生成器和列表(字典、集合)推导式

白昼怎懂夜的黑 提交于 2020-03-26 17:51:56
生成器初始 生成器本质就是迭代器。python社区生成器与迭代器是一种。生成器与迭代器的唯一区别:生成器是我们自己用python代码构建的。 生成器产生方式 生成器函数。 生成器表达式。 python给你提供的一些内置函数,返回一个生成器。 生成器函数。 之前接触的函数: def func(): print(111) return 2 ret = func() print(ret) 执行此函数,遇到return结束函数。 将数字2返回给ret。 生成器函数: 只要函数中出现了yield那么他就不是函数,它是生成器函数 def func(): print(111) print(111) print(111) print(111) print(111) print(111) yield 2,4,5 yield 3 yield 4 yield 5 ret = func() # 生成器对象 print(ret) # <generator object func at 0x0000000001E10F68> ''' 类比 l1 = [2,] [2,3,4,5] obj = iter(l1) ''' 只要函数中出现了yield那么他就不是函数,它是生成器函数。 一个next对应一个yield. print(next(ret)) print(next(ret)) print(next(ret))