Python简单练习(十二)

  • 简述Python中列表,元组,字典以及集合各自的特点
数据类型 空容器符号 是否可变 是否有序 是否存储重复元素 可以存储的数据类型
列表list [] 可变 有序 可以重复 任意类型
元组tuple () 不可变 有序 可以重复 任意类型
字典dict {} 可变 无序 key:唯一的,value:可以重复 key:不可变的数据,value:任意类型
集合set 可变 无序 不可以重复 不可变的数据
字符串str "" 不可变 有序 可以重复 ----
  • 简述Python中深拷贝和浅拷贝的区别并举例说明

但凡是可变数据类型(列表,字典,集合),都有拷贝的功能,

以列表lst1为例

  • 浅拷贝:

    • 操作方法:列表.copy()/ 导入copy 包,copy.copy() /切片
    • 拷贝列表的时候,只会拷贝列表的最外层,所以推荐一维列表使用
  • 深拷贝:

    • 操作方法:导入copy包,copy.deepcopy()
    • 无论一个列表如何修改,另一个列表都不受影响
    • 所以一般推荐多维列表使用
  • 写出下面代码的输出结果并说明原因
list1 = ['a', 'b', 'c', 'd', 'e']
print(list1[10:])   

输出结果没空列表:[]

输出内容为对列表的切片,但是符合切片的语法,虽然索引超出的原列表的范围,但是不会报错,返回一个空值

  • 写出下面代码的输出结果并说明原因
str1 = 'hello python'
str1.title()
print(str1)       

输出结果不变:hello python

字符串为不可变序列,虽然对其调用了title()方法,但是打印的还是其本身,所以不变

写出下面代码执行的结果并说明原因

list1=[5,3,1,9,12] 
r = (x for x in list1 if x%3==0) 
print(type(r))  

输出结果:<class 'generator'>

<class 'generator'> ,这是一个生成器的语法,得到的结果 r 是一个生成器

  • 在控制台中重复录入在西游记中你喜欢的人物。输入空字符串,打印所有人物。
lst1 = []
while True:
    character = input("请输入你喜欢的人物:")
    if character == "":
        print("输入结束")
        break
    else:
        if character in lst1:
            print(f"该人物在你喜欢的列表中,请重新输入")
            continue
        else:
            lst1.append(character)
print(f"喜欢的人物列表为:{lst1}")
  • 在控制台中录入,所有学生名字,如果姓名重复,则提示"姓名已经存在",不添加到列表中#,如果录入空字符串,则倒序打印所有学生
name_lst = []
while True:
    name = input("请输入学生姓名:")
    if name == "":
        print("输入结束")
        break
    else:
        if name in name_lst:
            print(f"姓名已经存在")
            continue
        else:
            name_lst.append(name)
print(f"学生列表为【正序】:{name_lst}")
print(f"学生列表为【逆序】:{name_lst[::-1]}")
  • 输入一个数字,转换成中文数字。比如:1 -----> 壹,5 -----> 伍
num_dict = {'1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖',
            '10': '拾'}
while True:
    num = input("请输入一个数字:")
    if num.isdigit():
        for i in num:
            print(num_dict[i], end="")
        print()
    else:
        print("输入错误,请重新输入")
  • 有如下商品价格:568,239,368,425,121,219,834,1263,26,请输入随意一个价格区间进行商品的筛选,并能够对筛选出的商品进行从大到小和从小到大进行排序,并求出这个区间的商品的平均价格
price_list = [568, 239, 368, 425, 121, 219, 834, 1263, 2]
choice_list = []
while True:
    num1 = input("请输入一个价格,作为价格区间的一个端点:")
    num2 = input("请输入一个价格,作为价格区间另一个端点:")
    if num1.isdigit() and num2.isdigit():
        min_price = min(int(num1), int(num2))
        max_price = max(int(num1), int(num2))

        for i in price_list:
            if min_price <= i <= max_price:
                choice_list.append(i)

        avg_price = sum(choice_list) / len(choice_list)

        print(f"在区间{min_price}——{max_price}区间的商品价格有:")

        choice_list.sort(reverse=True)
        print(f"从大到小排序:{choice_list}")

        choice_list.sort()
        print(f"从小到大排序:{choice_list}")

        print(f"平均价格是:{avg_price}")
        break
    else:
        print(f"价格区间输入错误,请重新输入")
  • 编写程序,使用列表生成表达式生成一个包含50个随机整数的列表,然后删除其中所有奇数
import random

all_list = [random.randint(0, 1000) for i in range(50)]
print(all_list)
final_list = [i for i in all_list if i % 2 == 0]
print(final_list)
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容