python学习基础第一阶段day05

列表内存图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除多个元素:

在这里插入图片描述

深拷贝

优点:
    	对其中之一的修改,
    	绝对不影响另外一个. 	
缺点:
    	比较占用内存
    	#准备深拷贝的工具
			import copy

例:

list01 = [
[1,2,3],
[4,5,6]
]

list02 =list01[:]

深拷贝列表

list02 = copy.deepcopy(list01)
list01[0] = “一”
list01[1][0] = “二”
print(list02)#

身份运算符

语法:
		x is y
		x is not y
作用:
			is 用于判断两个对象是否是同一个对象,是时返回True,否则返回False。
			is not 的作用与is相反

例:
list01 = [100]
list02 = [100]

*** 两个变量指向的对象是否同一个***
print(list01 is list02)# False

list03 = list01
print(list03 is list01)# True

原理:判断变量存储的地址是否相同

print(id(list01))# 140235347048584
print(id(list02))# 140235357765192
print(id(list03))# 140235347048584

列表VS字符串

1. 列表和字符串都是序列,元素之间有先后顺序关系。
2. 字符串是不可变的序列,列表是可变的序列。
3. 字符串中每个元素只能存储字符,而列表可以存储任意类型。
4. 列表和字符串都是可迭代对象。
5. 函数:
			将多个字符串拼接为一个。
			result = "连接符".join(列表)

			将一个字符串拆分为多个。
			列表 = “a-b-c-d”.split(“分隔符”)
# 根据某些逻辑,拼接字符串.
list01 = ["3", "4", "5", "7"]
# str_result = ""
# for item in list01:
#     # 每次循环,每次拼接,每次创建新对象
#     str_result = str_result + item
# print(str_result)
str_result = "——".join(list01)
print(str_result)

列表推导式

    	1.定义:
    				根据一个可迭代对象,构建另外一个列表。
    	 2. 语法:
					变量 = [表达式 for 变量 in 可迭代对象]
					变量 = [表达式 for 变量 in 可迭代对象 if 条件]
		3. 说明:
					如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。
# 需求1:将list01中每个元素增加10之后,存入list02
list01 = [34, 45, 54, 65, 67, 87]
# list02 = []
# for item in list01:
#     list02.append(item + 10)
list02 = [item + 10 for item in list01]

print(list02)

# 需求2:将list01中所有偶数增加10之后,存入list02
# list02 = []
# for item in list01:
#     if item % 2 == 0:
#         list02.append(item + 10)
list02 = [item + 10 for item in list01 if item % 2 == 0]

练习1:

list01 = [
    [1, 2, 3],
    [4, 5, 6]
]
list02 = list01[::-1]  # 浅拷贝
list01[0][0] = "一"
list01[1] = [7, 8, 9]
print(list02)

练习2:

"""
    在终端中循环录入学生成绩,如果录入空,则停止。
    打印最高分,最低分,平均数
    体会:容器
"""
list01 = []
while True:
    result = input("输入学生成绩学生成绩:")
    if result == "":
        break
    result = float(result)
    list01.append(result)
print("最高分:%d" % max(list01))
print("最低分:%d" % min(list01))
print("平均数:%.2f" % (sum(list01) / len(list01)))

练习3:

"""
    在终端中循环录入学生姓名,如果录入空,则停止。
    要求:姓名不能重复,如果重复提示,不存储
"""
list01 = []
while True:
    name = input("输入学生姓名:")
    if name == "":
        break
    if name not in list01:
        list01.append(name)
    else:
        print(name + "已经存在")
for i in range(len(list01) - 1, -1, -1):
    print(list01[i])

练习4:

"""
    list01=[54,5,65,67,78,8]
    删除列表中所有奇数
    三板斧: 内存条   调试
"""
list01 = [54, 5, 65, 67, 78, 8]
# for item in list01:
#     if item % 2:
#         list01.remove(item)

# 结论: 在列表中删除多个元素,倒序删除。
for i in range(len(list01) - 1, -1, -1):
    if list01[i] % 2:
        # list01.remove(list01[i])
        del list01[i]

print(list01)

练习5:

"""
    list=[4,5,65,76,7,8,9]
    在列表中找出最大值
"""
list01 = [4, 5, 65, 76, 7, 8, 9]
max_ = list01[0]
for i in range(1,len(list01)):
    if max_ < list01[i]:
        max_ = list01[i]

# for item in list01:
#     if max_ < item:
#         max_ = item
print(max_)

练习6:

"""
    斐波那契数列:
        1,1,2,3,4,5,8,13....
"""
list01 = [1, 1]
lenght = int(input("请输入斐波那契数列长度:"))
# for i in range(2, lenght):
#     element = list01[i - 2] + list01[i - 1]
#     list01.append(element)

for __ in range(lenght - 2):
    # 当前元素 =  最后两个元素之和
    element = list01[-2] + list01[-1]
    list01.append(element)
print(list01)

练习7:

"""
    在终端中循环录入字符串,如果录入空,则停止
    打印所有录入的内容(一个字符串)
"""
list_result = []
while True:
    content = input("请录入字符串:")
    if content == "":
        break
    list_result.append(content)
str_result = "-".join(list_result)
print(str_result)

练习8:

"""
    将英文语句进行反转
    How are you
"""

str_ = "How are you"
list01 = str_.split(" ")
str_result = " ".join(list01[::-1])
print(str_result)

练习8:

"""
    练习:
        1.使用列表推导式生成1--50之间能被3或者5整除的数字
        2.使用列表推导式生成5--60之间数字的平方
         3.将1970年到2025年之间的闰年存入列表
"""
# 1.使用列表推导式生成1--50之间能被3或者5整除的数字
# list01 = []
# for i in range(1, 51):
#     if i % 3 == 0 or i % 5 == 0:
#         list01.append(i)
list01 = [i for i in range(1, 51) if i % 3 == 0 or i % 5 == 0]
print(list01)

# 2.使用列表推导式生成5--60之间数字的平方
# list02=[]
# for i in range(5,61):
#      list02.append(i**2)
list02=[i**2 for i in range(5,61)]
print(list02)

# 3.将1970年到2025年之间的闰年存入列表
# list03=[]
# for i in range(1970, 2051):
#     if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
#         list03.append(i)
list03 = [i for i in range(1970, 2051) if i % 4 == 0 and i % 100 != 0 or i % 400 == 0]
print(list03)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值