代码改变世界

python 列表操作

2022-04-05 16:41  jym蒟蒻  阅读(73)  评论(0编辑  收藏  举报

 

1.创建列表:

向列表添加元素:

[i for i in range(1,10)]列表解析式:

#将 1-10 每个数乘以 2 放入一个列表:
>>> li = []
>>> for i in range(1, 11):
	li.append(i*2)

>>> print(li)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
#--------------------
#列表解析式实现:
>>> li = [i*2 for i in range(1, 11)]
>>> print(li)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
#---------------------
#此外列表解析式还支持添加筛选条件,例如筛选出 i*2>10 的数:
>>> li = [i*2 for i in range(1, 11) if i*2 > 10]
>>> print(li)
[12, 14, 16, 18, 20]

输入一组数,存入列表里:

'''
第一行为一个整数n。
第二行包含n个整数。
'''
#1.列表里面是数字
n=int(input())
a=list(map(int,input().split()))
#输入和输出:
3
1 2 3
>>> a
[1, 2, 3]

#2.列表里面是字符
n=int(input())
a=input().split()
#输入和输出:
3
1 2 3
>>> a
['1', '2', '3']

2.求列表最值

利用python生成器Generator求列表最值

**生成器表达式:**类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表

'''
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

python中的generator保存的是算法,真正需要计算出值的时候才会去往下计算出值。它是一种惰性计算(lazy evaluation)。
'''
#要创建一个generator有两种方式。

#第一种方法:把一个列表生成式的[]改成(),就创建了一个generator:
>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))   # 注意把[]改成()后,不是生成一个tuple,而是生成一个generator
>>> g
<generator object <genexpr> at 0x1022ef630>

#-----------------------------------------
#下面这个例子求字符串列表最大值
n=int(input())
arr = input().split()

print(int(arr[i]) for i in range(n))

print(max(int(arr[i]) for i in range(n))) # 最大值
print(min(int(arr[i]) for i in range(n))) # 最小值
print(sum(int(arr[i]) for i in range(n))) # 求和
#结果:
#输入:
5
1 2 3 4 5
#输出:
<generator object <genexpr> at 0x00000231AD2840A0>
5
1
15

3.多维列表

#1.创建一维列表,里面有10个0
>>> l=[0 for i in range(10)]
>>> l
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#2.创建n行m列的二维列表,里面全是零
m,n=map(int,input().split())

test = [[0 for i in range(m)] for j in range(n)]
#输入:
4 4
>>> print(test)
#输出:
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> test[1][1]=233
>>> print(test)
[[0, 0, 0, 0], [0, 233, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

#输入:
2 3
#输出:
[[0, 0], [0, 0], [0, 0]]