Python在入门-自学笔记-4列表

Python零基础入门自学笔记

参考教程【Python教程】《零基础入门学习Python》最新版@B站@鱼C-小甲鱼

本文记录的主要是Python中列表的使用。


列表是可变的,字符串是不可变的

0. 创建列表

创建一个列表:用中括号[ ]括起来

alist = [1,2,3,4,5,'上山打老虎']

1. 访问列表

逐个访问

for each in alist:
    print(each)

访问某个元素

alist[5]  #上山打老虎
alist[-1] #最后一个元素
alist[-2] #倒数第二个元素

列表长度

length = len(alist)

2. 列表切片

含左不含右

alist[0:3] #[1,2,3]
alist[3:6] #[4,5,'上山打老虎']

冒号省略前后

alist[:3] #[1,2,3]
alist[3:] #[4,5,'上山打老虎']
alist[:]  #输出整个列表  

跨度输出

alist[0:6:2] #[1, 3, 5]
alist[::2]   #[1, 3, 5]
alist[::-2]  #['上山打老虎', 4, 2]
alist[::-1]  #倒序输出 ['上山打老虎', 5, 4, 3, 2, 1]

3. 列表使用

alist.append(6)            # append() 添加一个
alist.extend([7,8,9])      # extend() 添加可迭代对象

alist[len(alist):] = [10]  # 最后一个后面添加
alist[len(alist):] = [11,12,13]

alist.insert(0,0)          # 插入(位置,参数)
alist.insert(len(alist),14)

alist.remove('上山打老虎') #删除第一个匹配的指定元素,不存在则报错
alist.pop(0)              #删除第0个元素
alist.clear()             #清空 #[]

nums = [3,1,4,1,5,9,2,6]
nums[len(nums)-1] = 7   # 如果是字符串的话['']

nums.sort()             # 从小到大 排序
nums.reverse()          # 原地反转
nums.sort(reverse=True) # 从大到小 排序

nums.count(1)            # 查找3出现的次数
nums.index(9)            # 查找元素9的索引值,第一次出现的
nums[nums.index(9)] = 8  # 把元素9改为8,第一个

  • 浅拷贝
nums_copy1 = nums.copy()  #拷贝整个列表内容,不仅是指向
nums_copy2 = nums[:]      #修改nums,nums_copy1/2不随之改
import copy   #二维列表拷贝要调用
x = [[1,2,3],[4,5,6],[7,8,9]] 
y = copy.copy(x)    # 浅拷贝
x[1][1] = 0
x   # [[1,2,3],[4,0,6],[7,8,9]]
y   # [[1,2,3],[4,0,6],[7,8,9]]
  • 深拷贝
    将应用对象一并拷贝
import copy   #二维列表拷贝要调用
x = [[1,2,3],[4,5,6],[7,8,9]] 
y = copy.deepcopy(x)    # 深拷贝
x[1][1] = 0
x   # [[1,2,3],[4,0,6],[7,8,9]]
y   # [[1,2,3],[4,5,6],[7,8,9]]

4. 列表运算

s = [1,2,3]
t = [4,5,6]
s + t
# [1,2,3,4,5,6]

重复引用

s = [1,2,3]
s * 3
# [1,2,3,1,2,3,1,2,3]

5. 列表嵌套

创建

matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix = [[1,2,3],
          [4,5,6],
          [7,8,9],
A = [0] * 3   # A = [0,0,0]
for i in range(3):
    A[i] = 0 * 3
# A = [[0,0,0],[0,0,0],[0,0,0]]

访问

for line in matrix:
    for each in line:
        print(each,end = ' ')
    print()
'''
1 2 3
4 5 6
7 8 9
'''
matrix[0]
# [1,2,3]
matrix[1][1]
# 5

6. 列表推导式

for in

[expression for target in iterable]

比使用for循环要快一些,for循环是逐个修改。
列表推导式,是创建一个新列表,再赋值回原列表。

a = [1,2,3,4,5]
a = [i * 2 for i in a] #每个元素都乘2
#[2,4,6,8,10]
b = [i * 2 for i in 'Hello']
b
#['HH', 'ee', 'll', 'll', 'oo']
#ord()
code = [ord(i) for i in 'Hello']
code
#[72, 101, 108, 108, 111]
matrix = [[1,2,3],
          [4,5,6],
          [7,8,9]]
col2 = [row[1] for row in matrix]
#col2 = [2,5,8]
diag = [matrix[i][i] for i in range(len(matrix))]
#diag = [1,5,9]
s = [[0] * 3 for i in range(3)]
#s
#[[0,0,0],[0,0,0],[0,0,0]]
s[1][1] = 1
#s
#[[0,0,0],[0,1,0],[0,0,0]]

for in if

even = [i + 1 for i in range(10) if i % 2 == 0]
#even
#[1,3,5,7,9]

for in for in …嵌套的

嵌套的内层循环放到后面的

matrix = [[1,2,3],
          [4,5,6],
          [7,8,9]]
flatten = [col for row in matrix for col in row] #展开
#flatten = [1,2,3,4,5,6,7,8,9]

for in if … for in if…

[[x,y] for x in range(10) if x % 2 == 0 for y in range(10) if y % 3 == 0] 

is

检验两个地址是否是同一个,
字符串固定地址,是同样的,
列表是开辟不同的地址,False
is判断地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值