python-笔试面试考点(二)

1、列表、元组、集合

1)列表

列表-[ ]:无序、可读可写,可村多种数据类型

li = [1, 3, 4, 5, 1]

# ---切片
print(li[::])  # [1, 3, 4, 5]
print(li[:-1])  # [1, 3, 4]
print(li[::-1])  # [5, 4, 3, 1]
print(li[:4])  # [1, 3, 4, 5]

# ---内置方法
print(li.index(1))  # 找寻下标为1的元素
print(li.count(1))  # 对列表中的1元素进行计数
print(li.pop())  # 删除尾元素
li.sort()  # 排序列表(字符串按照ASCII编码首字符大小排序)
print(li)
li.reverse()  # 逆序列表
print(li)
li.append(1)  # 尾增加元素
print(li)
li.insert(0, 1)  # 指定下标插入元素
print(li)
li.extend([1, 2, 3])  # 扩展列表
print(li)
li.remove(5)  # 指定元素删除
print(li)
li.clear()  # 清空列表
print(li)

# 结果

0
2
1
[1, 3, 4, 5]
[5, 4, 3, 1]
[5, 4, 3, 1, 1]
[1, 5, 4, 3, 1, 1]
[1, 5, 4, 3, 1, 1, 1, 2, 3]
[1, 4, 3, 1, 1, 1, 2, 3]
[]

 2)元组

元组-():只读,可存多种数据类型

tuple1 = (1,)  # 一个元素时这样定义,与数据括号区分
tuple2 = (1, 2, 3, 4, 1)
print(tuple2.count(1))
print(tuple2.index(4))

3)集合

集合-{ }:可读可写、去重

set1 = {1, 3, 4, 5, 6, 1, 3, 4, 5, 6}
print(set1)
set1.remove(6)
print(set1)
set1.pop()
print(set1)
set1.add(6)  # 集合尾添加元素
print(set1)
set1.update({5, 6, 7})  # 使用集合自身和其他集合的并集更新集合
print(set1)
set1.clear()
print(set1)

# 结果
{1, 3, 4, 5, 6}
{1, 3, 4, 5}
{3, 4, 5}
{3, 4, 5, 6}
{3, 4, 5, 6, 7}

 4)相关考点题

  • 将两个列表[1,5,7,9],[2,2,6,8]合并为[1,2,2,5,6,7,8,9]
  • a = [1,2,3,4,5,6], a[::-3]的结果
  • 列表去重再排序
  • s='ajldjlajfdljfddd' 去重并从小到大排序
# 1、将两个列表[1,5,7,9],[2,2,6,8]合并为[1,2,2,5,6,7,8,9]
li = [1, 5, 7, 9] + [2, 2, 6, 8]
# li = [1, 5, 7, 9]
# li.extend([2, 2, 6, 8])
li.sort()
print(li)

# 2、a = [1,2,3,4,5,6], a[::-3]的结果

a = [1, 2, 3, 4, 5, 6]
print(a[::-3])  # 倒序切片,步长为3,则从右开始切片,隔两个元素切一个元素
# 3、列表去重再排序
li2 = [1, 5, 2, 3, 2, 5, 1]
li2 = list(set(li2))
li2.sort()
print(li2)

# 4、s='ajldjlajfdljfddd' 去重并从小到大排序
s='ajldjlajfdljfddd'
s=list(set(s))
s.sort()
s = ''.join(s)
print(s)

2、可变类型和不可变类型 

1、不可变类型

整型,浮点型,字符串,布尔类型,元组 

x = 10 
x = 20
print(x)  # 20

 如图:

x=10:在内存中开辟一个内存空间0000 0001存储值10,然后x指向0000 0001

x=20:  在内存中开辟一个内存空间0000 0001存储值20, 然后x指向0000 0002

最后print(x) 打印出20,而0000 0001没有变量指向,变成垃圾回收

s = 'abcd'
new_s = s.upper()
print(new_s) #ABCD
print(s)

如图:

s='abcd':在内存中开辟一块空间0000 0003存储值abcd ,s指向0000 0003

new_s=s.upper():从内存0000 0003中取出值abcd转换为ABCD后,开辟一个内存空间0000 0004存储ABCD,并将0000 0004内存地址返回,new_s指向0000 0004

最后print(new_s)打印new_s出ABCD, print(s)打印出abcd

 2、可变类型

列表、字典


li = [2, 1, 3]

 如图:

li = [2, 1, 3]:开辟三块存储空间0000 0006,0000 0007,0000 0008 存储2,1,3(这三块空间可以是无序的),然后开辟一块空间0000 0005 存储三个索引值0,1,3,三个索引值分别存储0000 0006,0000 0007,0000 0008三块地址,然后li指向0000 0005


li[0] = 100
print(li)  # [100, 1, 3]

如图 

 li[0] = 100 :开辟存储空间0000 0009存储值100, 使得li指向的0000 0005地址中索引0存储的值为0000 0009

所以print(li) 打印[100, 1, 3]


li.append(4)
print(li)  # [100, 1, 3, 4]
li.sort()
print(li)  # [1, 3, 4, 100]

li.append(4): 开辟一块内存空间存储4,然后li指向的0000 0005地址添加一个索引,该索引存储的值为4的存储空间

li.sort() :改变索引存储地址的值,进行排序

 1)列题1

l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1[0] = 100
print(l1)
print(l2)

# 结果
[100, 2, 3]
[4, 5, [100, 2, 3]]

l2 = [4, 5, l1] :l2[2]索引存储的为l1的存储地址,而l1中的三个索引分别又存储着值1,2,3的地址

l1[0] = 100 :将l1[0]索引中存储的值变为值100的地址,而l2[2]依旧存储l1的地址

2)例题2 

l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1 = [8, 9, 10]
print(l1)
print(l2)

# 结果
[8, 9, 10]
[4, 5, [1, 2, 3]]

l1 = [1, 2, 3] : l1变量指向地址00000001,00000001中有三个索引分别存储三个地址,三个地址分别存储1,2,3

l2 = [4, 5, l1]:l2 指向地址2地址2中有三个索引存储值三个地址,即l2[2]存储00000001,00000001存储[1,2,3]

l1 = [8, 9, 10]:现在l1重新指向0000 0002,但l2依旧指向00000001

所以打印

[8, 9, 10]
[4, 5, [1, 2, 3]]


l1 = [1, 2, 3]
l2 = [4, 5, l1]
l1 = [8, 9, 10]
l2[2] = l1
print(l1)
print(l2)

# 结果
[8, 9, 10]
[4, 5, [8, 9, 10]]

3)例题3

li = [1, 2, 3]
d = {'a': li}
li = [4, 5, 6]
print(d) # {'a': [1, 2, 3]}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值