第六周作业

append 插入一个内容,在末尾追加

a = [i for i in range(1,4)]
a.append(88)
print(a)
[1, 2, 3, 88]

insert 指定位置插入

a = [i for i in range(1,4)]
print(a)
a.insert(2,15)# insert(index,data)
print(a)
[1, 2, 3]
[1, 2, 15, 3]

del 删除

pop 把最后一个元素取出来

print(a)
last_else = a.pop()
print(last_else)
print(a)
[1, 2, 15]
15
[1, 2]

remove 在列表中删除指定的元素

a = [i for i in range(1,6)]
print(a)
print(id(a))
a.remove(5)# 如果删除的值没在list里面,则报错
print(a)
print(id(a))
[1, 2, 3, 4, 5]
1665801729800
[1, 2, 3, 4]
1665801729800

clear 清空

print(a)
print(id(a))
a.clear()
print(a)
print(id(a))
[]
1665801729800
[]
1665801729800

reverse 翻转列表内容,原地翻转

a = [1,2,3,4,5]
print(a)
print(id(a))
a.reverse()
print(a)
print(id(a))
[1, 2, 3, 4, 5]
1665802626888
[5, 4, 3, 2, 1]
1665802626888

extend 扩展列表,两个列表,把一个直接拼接到另一个列表

a = [1,2,3,4,5]
b = [6,7,8,9]
print(a)
print(id(a))
a.extend(b)# 这个括号里是扩展的列表
print(a)
print(id(a))
[1, 2, 3, 4, 5]
1665803092232
[1, 2, 3, 4, 5, 6, 7, 8, 9]
1665803092232

count 查找列表中指定值或元素的个数

a = [1,2,3,4,5]
a.append(2)
a.insert(2,2)
print(a)
print(a.count(2))
[1, 2, 2, 3, 4, 5, 2]
3

copy 拷贝,浅拷贝

列表类型变量赋值案例

a = [1,2,3,5,6,8]
print(a)

list类型,简单赋值操作,是传地址,即id相同

b = a
b[3] = 88
print(a)
print(id(a))
print(b)
print(id(b))
print("*"*20)

为了解决以上问题,需要使用copy函数

b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))
print("*"*30)
b[3] = 77
print(a)
print(id(a))
print(b)
print(id(b))
[1, 2, 3, 5, 6, 8]
[1, 2, 3, 88, 6, 8]
1665803028616
[1, 2, 3, 88, 6, 8]
1665803028616


[1, 2, 3, 88, 6, 8]
1665803028616
[1, 2, 3, 88, 6, 8]
1665801704840


[1, 2, 3, 88, 6, 8]
1665803028616
[1, 2, 3, 77, 6, 8]
1665801704840

深拷贝与浅拷贝的区别

出现下面结果的原因是由于copy只是浅拷贝,只拷贝一层内容

a = [1,2,3,[50,60,70]]# 里面的列表相当于一个元素占位
b = a.copy()
print(id(a))
print(id(b))
print("*“30)
print(id(a[3]))
print(id(b[3]))
print("
”*30)
a[3][2] = 666
print(a)
print(b)
1665803236296
1665803238152


1665801704968
1665801704968


[1, 2, 3, [50, 60, 666]]
[1, 2, 3, [50, 60, 666]]

tuple 元组

创建一个空元组

元组的特性,1、有序,2、可以访问,不可以修改,3、list所有特性,除了可修改外,元组都具有,比如说索引,

t = ()
print(type(t))
t = (1,)#这里有逗号表示一个元组,如果没有逗号就表示一个整数
print(type(t))
print(t)
print("*“30)
t = 1,
print(type(t))
print(t)
print("
”*30)

创建含多个值的元组

t = 1,2,3,4,4#这里可以用括号,也可以不用
print(type(t))
print(t)
print("*"*30)

使用其他结构创建

l = [1,2,3,4,5]
t = tuple(l)
print(type(t))
print(t)
<class ‘tuple’>
<class ‘tuple’>
(1,)


<class ‘tuple’>
(1,)


<class ‘tuple’>
(1, 2, 3, 4, 4)


<class ‘tuple’>
(1, 2, 3, 4, 5)

索引操作

t = (1,2,3,5,6)
print(t[3])

超标错误

print(t[6])
5

IndexError Traceback (most recent call last)
in
3 print(t[3])
4 # 超标错误
----> 5 print(t[6])

IndexError: tuple index out of range

切片

t = (1,2,3,4,5,6)
t1 = t[1::2]# 表示从2 开始间隔两个,切片可以超标
print(id(t))
print(id(t1))
print(t1)
1665803048808
1665802604120
(2, 4, 6)

序列相加

a = (1,2,3)
b = (2,3,4)

传址操作

print(a)
print(id(a))
a = a + b
print(a)
print(id(a))

注意tuple的不可更改指的是内容不可更改,修改tuple内容会导致报错

a[2] = 6
print(a)
(1, 2, 3)
1665801305760
(1, 2, 3, 2, 3, 4)
1665801436232

TypeError Traceback (most recent call last)
in
9 print(id(a))
10 # 注意tuple的不可更改指的是内容不可更改,修改tuple内容会导致报错
—> 11 a[2] = 6
12 print(a)

TypeError: ‘tuple’ object does not support item assignment

元组相乘

t = (1,2,3)
t = t*3
print(t)
(1, 2, 3, 1, 2, 3, 1, 2, 3)

成员检测

t = (1,2,3)
if 2 in t:
print(“yes”)
else:
print(“no”)
yes
# 元组遍历

1、单层元组遍历

t = (1,3,4,“xixi”)
for i in t:
print(i)
print("*"*30)
t = (1,3,4,“xixi”)
for i in t:
print(i,end=" ")
1
3
4
xixi


1 3 4 xixi

2、双层元组遍历

t = ((1,2,3),(“xi”,“xi”,“xi”),(“wei”,“feng”,“a”))
for i in t:
print(i)
print("*“30)
for k,v,n in t:
print(k,"—",v,"—",n)
print("
”*30)
for k,v,n in t:
print(k,"—",v,"—",n,end=" ")
(1, 2, 3)
(‘xi’, ‘xi’, ‘xi’)
(‘wei’, ‘feng’, ‘a’)


1 — 2 — 3
xi — xi — xi
wei — feng — a


1 — 2 — 3 xi — xi — xi wei — feng — a

index求指定元素的索引位置

t = (1,2,3,5,5,6)
print(t.index(3))
print(t.index(5))# 有多个相同值时,以第一个为准
2
3

set 集合

t = set()
print(type(t))
print(t)
print("*"*30)

此时大括号里一定要有值,否则定义的是一个dict

t = {1,2,3,4,5,7}
print(type(t))
print(t)
print("*"*30)

如果只是用大括号定义,则定义的是一个dict

t = {}
print(type(t))
print(t)
<class ‘set’>
set()


<class ‘set’>
{1, 2, 3, 4, 5, 7}


<class ‘dict’>
{}

集合的特征,集合内数据无序,既无法使用索引和分片

集合内数据元素具有唯一性,可以用来排除重复数据

成员检测 in ,not in

s = (2,23,5,6,“future”,‘xixi’)
print(s)
if ‘xixi’ in s:# 注意这里的xixi要用引号引起来
print(“再见啦”)
if ‘jingjing’ not in s:
print(“好久不见啊”)
(2, 23, 5, 6, ‘future’, ‘xixi’)
再见啦
好久不见啊

集合遍历操作

for 循环

s = {1,2,3}
for i in s:
print(i,end=" “)
1 2 3
# 带有元组的集合遍历
s = {(1,2,3),(“i”,“love”,“jingjing”)}
for k,v,n in s:
print(k,”- - -",v,"- - -",n)
for k in s:
print(k)
i - - - love - - - jingjing
1 - - - 2 - - - 3
(‘i’, ‘love’, ‘jingjing’)
(1, 2, 3)

普通集合内涵

以下结合可以自动过滤重复元素

s = {2,2,2,8,8,89,68,89,9889,8,1,5}
print(s)
ss = {i for i in s}
print(ss)
sss = {i for i in s if i % 2 == 0}# 只取偶数
print(sss)
{9889, 2, 1, 68, 5, 8, 89}
{9889, 2, 1, 68, 5, 8, 89}
{8, 2, 68}

创建一个空字典

d = {}
print(type(d))
print(d)

创建一个有值的字典

d = {“one”:1,“two”:2,“three”:3}
print(d)
<class ‘dict’>
{}
{‘one’: 1, ‘two’: 2, ‘three’: 3}

字典常见操作

访问数据

d = {“one”:1,“two”:2,“three”:3}
print(d[“one”]) # 注意这里的中括号是键值
d[“one”] = “eith”
print(d)
1
{‘one’: ‘eith’, ‘two’: 2, ‘three’: 3}

成员检测 in , not in

成员检测的是key内容

d = {“one”:1,“two”:2,“three”:3}
if “one” in d:
print(“key”)
if 1 in d:
print(“value”)
if (“one”,1) in d:
print(k,v)
key

遍历

d = {“one”:1,“two”:2,“three”:3}
for i in d.keys():# 这是访问的键值
print(i,d[i])
for i in d.values():# 这是访问的数值
print(i)
for k,v in d.items():# 这里的写法是与集合等不同的地方
print(k,"- - ",v)
one 1
two 2
three 3
1
2
3
one - - 1
two - - 2
three - - 3

常规字典生成式

d = {“one”:1,“two”:2,“three”:3}
dd = {k:v for k,v in d.items()}# 注意这里items()以及k:v
print(dd)

加限制条件的字典生成式

d = {“one”:1,“two”:2,“three”:3}
dd = {k:v for k,v in d.items() if v % 2 == 0}
print(dd)
{‘one’: 1, ‘two’: 2, ‘three’: 3}
{‘two’: 2}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值