python3中常用的列表方法(method)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3中常用的列表方法(method)相关的知识,希望对你有一定的参考价值。
python3中常用的列表方法(method)
详见: >>> help(list)
文档见: python_base_docs/list_xxxx.html
深拷贝和浅拷贝
浅拷贝 shallow copy
示例:
L = [3.1, 3.2]
L1 = [1, 2, L] # L1 = [1, 2, [3.1, 3.2]]
L2 = L1.copy() # 浅拷贝 L2 = [1, 2, [3.1, 3.2]]
print(L1)
print(L2)
L1[2][0] = 3.14 # 改变L列表里的第0个元素
print(L1)
print(L2)
深拷贝 deep copy
深拷贝是指在复制对象时,将对象的关联的对象也一同复制
示例:
import copy # 导入复制模块
L = [3.1, 3.2]
L1 = [1, 2, L] # L1 = [1, 2, [3.1, 3.2]]
L2 = copy.deepcopy(L1) # 深拷贝
print(L1)
print(L2)
L1[2][0] = 3.14 # 改变L列表里的第0个元素
print(L1)
print(L2)
注:
深拷贝通常只对含有可变对象的对象进行复制, 不可变对象通常不变
列表和字符串比较:
列表和字符串都是序列,元素之间有先后顺序关系
字符串是不可变的序列,列表是可变的序列
字符串中每个元素只能是字符,而列表可以存储任意类型的元素
列表和字符串都是可迭代对象
字符串文本解析方法split() 和join()
S.split(sep=None) 将字符串,使用sep作为分隔符分割S字符串,返回分割后的字符串列表,当不给定参数时,用空白字符作为分隔符分割
S.join(iterable) 用可迭代对象中的字符串,返回一个中间用S进行分隔的字符串
注:
S代表字符串
示例:
s = "A,BB,CCC,DDDD"
L = s.split(‘,‘) # L = [‘A‘,‘BB‘,‘CCC‘,‘DDDD‘]
获取用户输入的英文单词个数:
s = input("请输入:") # "welcome to beijing"
L = s.split() # 不加参数将以空白字符作为分隔符
print(len(L)) # 3
path = ["C:", "Programe Files", "Python3"]
‘\‘.join(path) # "C:\Programe Files\Python3"
练习:
-
有字符串"hello" ,用此字符串生成"h e l l o" 和 ‘h-e-l-l-o‘
s = "hello"
‘ ‘.join(s) -
有一些数存在列表中.如:
L = [1, 3, 2, 1, 6, 4, 2, ....., 98, 82]
要求将列表中只出现一次的数字存入到另一个列表L2中
(十分钟)
(出现多次的不要了!)for x in L: # 取出列表中的所有元素
if L.count(x) == 1:
将其放入列表L2中
...
...
列表推导式 list comprehension
作用:
用可迭代对象和表达式组合生成列表
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
思考:
输入一个整数用n绑定,生成一个从 1到 n的平方的列表
输入: 9
生成 [1, 4, 9, 16, 52, 62, ..... 81]
用列表和for语句组合
n = int(input("输入: "))
L = []
for x in range(1, n + 1):
L.append(x ** 2)
print(L)
练习:
用列表推导式生成如下列表:
L = [1,4,7,10, .... 100]
print(L)
练习:
输入一个开始的整数用begin绑定
输入一个结束的整数用end绑定
将从begin开始,到end结束(不包含end)的所有偶数存于列表中
(建议用列表推导完成)
列表推导式的嵌套:
语法:
[表达式1 for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2]
示例:
有两个列表:
L1 = [2,3,5]
L2 = [7,11,13]
生成一个新列表L3 ,L3为L1中的元素和L2中的元素分别相乘合到
L= [27, 211, 213, 37, 311, ... 513]
L = [x * y
for x in L1
for y in L2]
print(L)
练习:
用列表推导式嵌套生成如下列表:
用字符串 "ABC" 和"123"生成如下列表:
["A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"]
元组 tuple
定义:
元组是不可改变的序列,同list一样,元组可以存放任意类型的元素
元组的表示方法:
用小括号() 括起来,单个元素括起来时后加逗号(,)区分单个对象还是元组
创建空元组的字面值
t = () # 空元组
创建非空元组的字面值:
t = 200,
t = (200,)
t = (1,2,3)
t = 100, 200, 300
type(x) 函数用来返回x的类型
元组的构造(创建)函数 tuple
tuple() 生成一个空的元组,等同于()
tuple(iterable) 用可迭代对象生成一个元组
示例:
t = tuple() # 等同于 t = ()
t = tuple(range(5)) # t = (0,1,2,3,4)
t = tuple("ABCD")
t = tuple([5,6,7,8])
元组的运算:
算术运算:
-
+= =
规则同列表和字符串相同
比较运算:
< <= > >= == !=
规则同列表和字符串相同
in / not in 运算
判断一个元素是否在元组内存在, 如果存在返回True,否则返回False索引 index
用法等同于列表的索引
元组不能索引赋值切片 slice
用法等同于列表的切片
元组的切片返回一个新的元组
元组不能切片赋值
元组的方法:
T代表元组:
T.index(v[,begin[,end]]) 返回对应元素的索引下标,begin为开始索引,end为结束索引,当v 不存在时,触发ValueError错误
T.count(x) 返回元组中对应元素的个数
详见: >>> help(tuple)
五种中的三种序列:
str
list
tuple
序列相关的函数小结:
len(seq) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
sum(x) 返回序列中所有元素的和
any(x) 真值测试,只要有一个为True就为True
all(x) 真值测试,所有元素都为True 才为True
str(obj) 将对象obj序列化为字符串
list(iterable) 用可迭代对象来生成一个列表
tuple(iterable) 用可迭代对象来生成一个元素
reversed(seq) 返回反向顺序的迭代器对象
sorted(iterable, reverse=False) 返回已排序的列表
练习:
任意输入一个字符串:
将此字符串中的空格全部去除, 生成返转后的字符串:
如:
输入: abc def g<回车>
输出: gfedcba
(提示: 可以用reversed 进行反转)
练习:
- 有一些数存在列表中.如:
L = [1, 3, 2, 1, 6, 4, 2, ....., 98, 82]
将列表中只的数字存入到另一个列表L2中,
要求:
重复出现多次的数字只在L2列表中保留一份 -
求100 以内的全部素数,将这素数存放于列表L 中
最后打印列表 L - 算出100 ~ 1000 以内的水仙花数(Narcissistic Number)
水仙花数是指百位的3次方加上十位的3次方加个位的3次方等于原数的数字
例如:
153 = 13 + 53 + 3**3
答案:
153, 370, ...
以上是关于python3中常用的列表方法(method)的主要内容,如果未能解决你的问题,请参考以下文章