【Python学习笔记】二、列表和元组

1.通过索引操作序列元素

>>>name=["sda","qwe","zxc","yui"]
>>>print(name[0])
sda
>>>print(name[-1]) #序列最后一个元素的索引是-1,倒数第二个是-2,以此类推
yui

2.分片操作:从序列A中获取子序列B

序列名 [ 开始索引:结束索引:步长 ]

>>>url="https://abcdefg.com"
>>>print(url[8:15])
abcdefg
>>>print(url[-5:-2])
g.c

>>>num=[0,1,2,3,4,5]
>>>print(num[3:6])
[3, 4, 5]
>>>print(num[-3:-1])
[3, 4]
>>>print(num[3:]) #省略结束索引则会获取到父序列的最后一个元素
[3, 4, 5]
>>>print(num[:3]) #省略开始索引则会从父序列的第一个元素开始获取
[0, 1, 2]
>>>print(num[:]) #全省略则会复制整个序列
[0, 1, 2, 3, 4, 5]

#设置步长
>>>print(num[0:6:2])
[0, 2, 4]
>>>print(num[6:1:-1]) #步长可以是负数(不能为0),分片会从序列右侧开始,此时开始索引要大于结束索引
[5, 4, 3, 2]

3.检查某个值是否属于一个序列

如果某个值属于一个序列,in运算符返回True,否则返回False

>>>num=[0,1,2,3,4,5]
>>>if 2 in num:
    print("2属于num序列")
2属于num序列

4.序列的相加和乘法

序列的相加:将序列合并为一个

>>> num1=[0,1,2]
>>> num2=[3,4,5]
>>> num=num1+num2
>>> num
[0, 1, 2, 3, 4, 5]

序列的乘法:一个序列乘n即将原来的序列重复n次

>>> num=[1,2]
>>> print(num*5)
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

>>> print('hello'*5)
'hellohellohellohellohello'

5.序列的长度、最大值和最小值

>>> num=[0,1,2,-6,52]
>>> len(num)
5
>>> max(num)
52
>>> min(num)
-6

>>> max(1,5,8,3)
8

6.列表的基本操作

>>>s=["abc","mary","john"]

#列表元素赋值
>>>s[1]="Mike"
>>>print(s)
['abc', 'Mike', 'john']

#删除列表元素
>>>del s[2]
>>>print(s)
['abc', 'Mike']

#分片赋值
>>>s[1:]=['a','b','c']
>>>print(s)
['abc', 'a', 'b', 'c']

>>>name=list("Mike") #使用list函数将"Mike"转换为由字符组成的列表
>>>print(name)
['M', 'i', 'k', 'e']
>>>name[1:]=list("ary")
>>>print(name)
['M', 'a', 'r', 'y']

#在列表中插入一个列表 / 在列表中删除一些列表元素
>>>num=[0,1,2,7,8]
>>>num[3:3]=[3,4,5,6]
>>>print(num)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>>num[3:7]=[]
>>>print(num)
[0, 1, 2, 7, 8]

7.列表方法

append

在列表最后插入新的值。

count

用于统计某个元素在列表中出现的次数。

index

用于从列表中找出某个值第一次出现的索引位置。

clear

用于清除列表的内容。

>>> num=[0,1,2,3,3,3]
>>> num.append(4) #列表最后插入4
>>> print(num)
[0, 1, 2, 3, 3, 3, 4]
>>> print(num.count(3)) #统计3出现的次数
3
>>> print(num.index(3)) #3第一次出现的索引位置
3
>>> num.clear() #清空列表
>>> print(num)
[]
insert

用于将值插入到列表指定位置。

pop

用于移除列表中的元素(默认是最后一个元素),并返回该元素的值。

remove

用于移除列表中某个值的第一次匹配项。

reverse

用于将列表的元素反向存放。

sort

用于对列表进行排序(默认是升序),调用该方法会改变原来的列表。

>>> num=[7,2,6,0,9,4]

>>> num.insert(2,6) #在第3个位置插入6
>>> print(num)
[7, 2, 6, 6, 0, 9, 4]

>>> num.pop() #默认弹出最后一个元素
4
>>> print(num)
[7, 2, 6, 6, 0, 9]
>>> num.pop(1) #弹出第2个元素
2
>>> print(num)
[7, 6, 6, 0, 9]

>>> num.reverse() #反转列表
>>> print(num)
[9, 0, 6, 6, 7]

>>> num.sort() #列表排序(默认升序)
>>> print(num)
[0, 6, 6, 7, 9]
>>>num.sort(reverse=True) #降序排序
[9, 7, 6, 6, 0]

>>> num.remove(6) #移除第一个6
>>> print(num)
[9, 7, 6, 0]
copy

用于复制一个列表。

extend

用于在列表结尾插入另一个列表,也就是用新列表扩展原有的列表。有点类似列表相加,不过extend方法改变的是被扩展的列表,而列表相加产生了一个新列表。

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b) #列表a拼接列表b
>>> print(a)
[1, 2, 3, 4, 5, 6]
>>> bb=a.copy() #把列表a复制给bb
>>> print(bb)
[1, 2, 3, 4, 5, 6]

8.序列的相关操作函数

序列排序:sorted函数
>>>x=[0,7,9,6,6]
>>>y=sorted(x) #sorted函数是对列表的副本进行排序,原列表不变
>>>print(x)
[0, 7, 9, 6, 6]
>>>print(y)
[0, 6, 6, 7, 9]
序列反转:reversed函数
>>>num=reversed([1,2,3,4,5])
>>>for i in num:
    print(i,end=' ')
Output:5 4 3 2 1

>>>num=[1,2,3,4,5]
>>>print(reversed(num)) 
Output:<list_reverseiterator object at 0x000001F31AE74FD0>
>>>print(list(reversed(num))) 
Output:[5, 4, 3, 2, 1]
压缩序列:zip函数

用zip函数将两个或多个序列的对应元素作为一个元组放到一起。
若进行压缩的序列元素个数不相同,以元素个数最少的为准。
zip函数返回的序列形式比较复杂,所以不能直接print输出。

char=['a','b','c']
num=[1,2]
for i in zip(char,num):
    print(i,end=' ') #Output:('a', 1) ('b', 2)
    
print(zip(char,num)) #Output:<zip object at 0x000002C6838A0448> 

9.元组

元组和列表的区别:列表是可读写的,而元组是只读的。

num=() #创建一个空元组

num1=1,2,3 #或用括号括起来num1=(1,2,3)
print(num1) #创建元组  Output:(1, 2, 3)

value=40, #value=(40,)
print(value) #创建一个值的元组,Output:(40,)

print(5*(16,)) #生成5个同样值得元组,Output:(16, 16, 16, 16, 16)

#tuple函数将序列转换为元组
print(tuple([1,2,3])) #Output:(1, 2, 3)
print(tuple("hello")) #Output:('h', 'e', 'l', 'l', 'o')

10.创建一维列表List

book=[0 for i in range(9)] #创建长度为9的的一维列表并初始化为0
print(book)
#Output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

11.创建二维列表List

第一种方法:

num=[[0 for i in range(3)]for i in range(4)] #创建4行3列的列表,初始化为0
print(num)
#Output:[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
num[2][1]=5
print(num)
#Output:[[0, 0, 0], [0, 0, 0], [0, 5, 0], [0, 0, 0]]

第二种方法:

num=[[0]*3 for i in range(4)] #创建4行3列的列表,初始化为0
print(num)
#Output:[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
num[2][1]=5
print(num)
#Output:[[0, 0, 0], [0, 0, 0], [0, 5, 0], [0, 0, 0]]
num=[[]for i in range(3)]
print(num)
#Output:[[], [], []]
num[0].append(4)
num[0].append(5)
print(num)
#Output:[[4, 5], [], []]

输入一个二维矩阵:

n,m=map(int,input().split())
G=[]
for i in range(n):
	a=map(int,input().split())
	G.append(list(a))
print(G)
print(G[2][3]) #可用G[i][j]进行随机访问

#input:
3 4
2 5 6 4
3 5 8 9
1 4 25 7
#output:
[[2, 5, 6, 4], [3, 5, 8, 9], [1, 4, 25, 7]]
7

12.二维列表的遍历

num=[[2 for i in range(3)]for i in range(4)] #创建了一个4行3列的二维列表
print(num)
#Output:[[2, 2, 2], [2, 2, 2], [2, 2, 2], [2, 2, 2]]

#第一种遍历方法:
for i in range(len(num)):
    for j in range(len(num[i])):
        print(num[i][j],end=" ")
    print()
#Output:
2 2 2 
2 2 2 
2 2 2 
2 2 2 

#第二种遍历方法:
for i in num:
    for j in i:
        print(j,end=" ")
    print()
#Output:
2 2 2 
2 2 2 
2 2 2 
2 2 2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值