2021-11-07

第七天总结

线性表:
数组(Array):连续,大小固定的内存结构
栈(Stack):先进后出,后进先出
队列(Queue):先进先出
链表(List):

python内置的常见容器
python没有实现数组
列表(list):底层基于双向链表结构实现的
集合(set):
元组(tuple):
字典(dict):k-v键值对实现

列表(list):

列表的定义:
	有两种方式:通过弱数据类型语言的特点完成
		ls = [12,34,45,88,99]
	第二种,就是调用一个全局函数
		list()
		list([元素1, 元素2, ……, 元素n])

如何访问列表中的元素(element):
列表[下标] # 下标是从0开发

如何得到列表共有多少个元素?
	len(列表)		# 得到列表的元素个数

如何遍历列表
index = 0
while index < len(ls):
print(ls[index])
index += 1

for循环python,for循环就是用来迭代可迭代对象,而list就是一个可迭代对象
for i in ls:
print(i)

列表中的常见方法(methods):
[‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’,
‘remove’, ‘reverse’, ‘sort’]

|-- append(新元素)		# 在列表尾部追加一个最后元素
|-- insert(index, 新元素)	# 在需要的位置添加新元素
|-- extend(列表)		# 合并多个列表
|-- remove(元素)		# 删除元素
|-- pop()			# 删除最后一个元素
|-- clear()			# 清除所有元素
|-- index(元素)			# 查询元素出现的第一个索引,注意,如果没有改元素,则抛出错误
|-- count(元素)			# 统计元素出现的次数
|-- reverse()			# 翻转列表顺序
|-- sort()			# 注意类型统一
|-- copy()			# 对象浅拷贝(堆内存)

第七天的作业

作业1:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]
方法一:

ls = [10, 8, 5, 3, 27, 99]

for i in ls:

index = (i + 1) // 2

print(index)

方法二:
#ls = [10, 8, 5, 3, 27, 99]

i = 0

while i < len(ls):

index = (ls[i]+1) // 2

print(index)

i += 1

请添加图片描述

作业2:如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

ls = []

flag = True

for num in range(2,100):

for i in range(2,num):

if num % i == 0:

flag = False

break

else:

flag = True

if flag:

ls.append(num)

print(‘1~100以内的素数有:’)

print(ls)

j = 1

while j < len(ls):

if ls[j] - ls[j - 1] == 2:

print("{}和{}是孪生数".format(ls[j], ls[j - 1]))

j += 1

请添加图片描述

作业3:给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

ls = [8,2,6,4,7,5,3,1,9]

ls.sort()

print(ls)

n = 0

print(‘最小值为:’,ls[0])

print(‘最大值为:’,ls[len(ls)-1])

for i in ls:

n += i

print(‘平均数为:’,n/len(ls))

print(‘和为:’,n)

在这里插入图片描述

作业4:将list中的重复数据去重,至少使用两种方案
#方法一:

ls = [1,2,3,4,5,6,7,7,6,5,4,3,2,1]

print(ls)

print(list(set(ls)))

#方法二:

ls1 = [1,2,3,4,5,6,7,7,6,5,4,3,2,1]

ls2 = [1,2,3,4,5,6,7,7,6,5,4,3,2,1]

print(ls1)

for i in ls1:

if i in ls2:

ls1.remove(i)

print(ls1)

#方法三:

ls1 = [1,2,3,4,5,6,7,7,6,5,4,3,2,1]

ls2 = []

for i in ls1:

if i not in ls2:

ls2.append(i)

print(ls1)

print(ls2)

在这里插入图片描述
作业5:两个列表进行合并操作
#方法一:

ls1 = [1,2,3]

ls2 = [4,5,6]

ls3 = [7,8,9]

ls4 = ls1 + ls2 + ls3

print(ls4)

#方法二:

ls1 = [1,2,3]

ls2 = [4,5,6]

ls3 = [7,8,9]

ls1.extend(ls2 + ls3)

print(ls1)

在这里插入图片描述

作业6: 使用列表判断一个列表是否在另外一个列表中
在这里插入图片描述

作业7:列表的反转 列表的排序

ls = [1,2,3,6,7,9,8,4,5]

print(ls)

ls.reverse()

print(‘列表的反转:’,ls)

ls.sort()

print(‘列表的排序:’,ls)请添加图片描述

作业8:如何将0-10随机存入列表中

import random as a

ls = []

for i in range(0,10):

ls.append(a.randint(0,10))

print(ls)

在这里插入图片描述

第八天的总结

今日目标:
set 集合
tuple 元组
dict 字典

set:
一般集合都是使用hash表实现,
无序且不重复!!!!

定义集合
s = {值1, 值2,…… 值n} # set定义是,不能为空,为空表示一个空字典

ss = set()
sss = set({1,2,3,4,})
ssss = set([1,2,3,4,45,5]) # 使用set函数完成list转换为set
同样的道理
list({1,3,2,43,44,4,5})		# 将set转换为list


set的常见方法:
	
|-- add(新元素)			# 添加新的元素
|-- clear()			# 清空集合
|-- copy()			# 浅拷贝set
|-- difference()		# 求两个集合的差集
|-- union			# 求两个集合的并集
|-- intersection		# 求两个集合的交集
|-- remove()			# 移除元素,如果该元素不存在,则抛出错误
|-- pop()			# 随机移除一个元素
|-- discard()			# 移除元素,如果该元素不存在,则什么都不做

元组(tuple)
固定的值,不可变数据类型,类似于java、C这些中枚举类型

通过下标访问元素,元素不可变
只有两个方法
|-- index 
|-- count

可变数据类型和不可变数据:
基本数据类型都是不可变的,元组也是不可变的

注意1:如果元组的元素是一个可变对象,则可以修改该元素!!!
注意2:请注意(10)和(10, )不同之处

字典(dict):
注意,python中的字段也是一个{}形式,只是里面的元素,不是一个个的值
而是一对键值对

d = {"name": "张三", "age": 34, "nickname": "法外狂徒"}

访问字典中的元素
通过key来访问
d[“name”]
d.get(“age”)

遍历字典:

for i in d:
    print(i, d[i])

for i in d.keys():
     print(i, d.get(i)) 

for i in d.items():
     print(i[0], i[1])

for k, v in  d.items():
     print(k, v)

for (k, v) in  d.items():
     print(k, v)

常见方法:

[clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 
'pop', 'popitem', 'setdefault', 'update', 'values']

第八天的作业

作业1:完成一个登录注册案例(要求使用容器保存数据)

作业2:给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

作业3:求 a+aa+aaa+…+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

作业4:合并两个有序数组,合并后还是有序列表

作业5:给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

作业6:将10进制数据转换为二进制,并且统计其中的0和1的数量

作业7:给定一个数组,已知数组中的元素都是成对出现,
现在数组中只有一个元素没有成对,请找出这个元素。
[1,3,1,2,2,8,8]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值