Python列表经典实例

Python列表经典实例

list1 = []
character = input("请输入西游记中你喜欢的人物:")
while(character):
    list1.append(character)
    character = input("请输入西游记中你喜欢的人物:")
for i in range(0,len(list1)):
    print(("你喜欢的人物是:%s")%list1[i])

请输入西游记中你喜欢的人物:孙悟空
请输入西游记中你喜欢的人物:猪八戒
请输入西游记中你喜欢的人物:沙悟净
请输入西游记中你喜欢的人物:蜘蛛精
请输入西游记中你喜欢的人物:
你喜欢的人物是:孙悟空
你喜欢的人物是:猪八戒
你喜欢的人物是:沙悟净
你喜欢的人物是:蜘蛛精

list1 = []
while(True):
    grade_str = input("请输入学生成绩:")
    if grade_str:
        grade = int(grade_str)
        list1.append(grade)
    else:
        break
for i in range(0,len(list1)):
    print(("学生分数为:%d")%list1[i])

print("最高分是%d分"%max(list1))
print("最低分是%d分"%min(list1))
print("最高分是%d分"%(sum(list1)/len(list1)))

请输入学生成绩:25
请输入学生成绩:45
请输入学生成绩:75
请输入学生成绩:87
请输入学生成绩:3
请输入学生成绩:57
请输入学生成绩:45
请输入学生成绩:98
请输入学生成绩:36
请输入学生成绩:45
请输入学生成绩:24
请输入学生成绩:35
请输入学生成绩:45
请输入学生成绩:36
请输入学生成绩:37
请输入学生成绩:78
请输入学生成绩:
学生分数为:25
学生分数为:45
学生分数为:75
学生分数为:87
学生分数为:3
学生分数为:57
学生分数为:45
学生分数为:98
学生分数为:36
学生分数为:45
学生分数为:24
学生分数为:35
学生分数为:45
学生分数为:36
学生分数为:37
学生分数为:78
最高分是98分
最低分是3分
最高分是48分

list3 = []
while True:
    a = 0
    name = input("请输入学生姓名:")
    if name:
        for i in list3:
            if name == i:
                a += 1
        if a == 0:
            list3.append(name)
        else:
            print("姓名已经存在,请重新输入。")
    else:
        for i in range(len(list3)-1,-1,-1):
            print(list3[i])
        break

请输入学生姓名:张三
请输入学生姓名:李四
请输入学生姓名:王五
请输入学生姓名:刘德华
请输入学生姓名:张三
姓名已经存在,请重新输入。
请输入学生姓名:李四
姓名已经存在,请重新输入。
请输入学生姓名:张三丰
请输入学生姓名:李云龙
请输入学生姓名:张嘎
请输入学生姓名:
张嘎
李云龙
张三丰
刘德华
王五
李四
张三

list3 = []
while True:
    a = 0
    name = input("请输入学生姓名:")
    if name:
        if name not in list3:
            list3.append(name)
        else:
            print("姓名已经存在,请重新输入。")
    else:
        for i in range(len(list3)-1,-1,-1):
            print(list3[i])
        break

请输入学生姓名:张三
请输入学生姓名:李四
请输入学生姓名:王五
请输入学生姓名:刘德华
请输入学生姓名:张三
姓名已经存在,请重新输入。
请输入学生姓名:李四
姓名已经存在,请重新输入。
请输入学生姓名:李云龙
请输入学生姓名:
李云龙
刘德华
王五
李四
张三

#要熟悉列表内存图,才能更好理解下面这个情况
list01 = ["张无忌","赵敏"]  #list01中存放的是列表["张无忌","赵敏"]的地址
list02 = list01  #同理这是list01把存放的列表["张无忌","赵敏"]的地址交给list02
list01[0] = "无忌"  #这段通过list01改变了列表的内容,而list02存放的内容是这个列表的地址,这个列表内容变了,所以print(list02[0])同样也会变
print(list02[0])  #因为list01和list02存放的都是这个列表的地址,并不是这个列表的内容,所以列表本身内容变,则都变。

无忌

#但是因为切片动作会复制生成一个相同的列表,所以利用切片赋列表时,情况又不一样。
list03 = ["张无忌","赵敏"]  #list03中存放的是列表["张无忌","赵敏"]的地址
list04 = list03[:]  #因为进行了切片操作,此时内存中生成了一个和list03一样的列表,并把它的地址赋给了list04
list03[0] = "无忌"  #这段通过list03改变了列表的内容,而list02存放的内容是这个列表的地址,这个列表内容变了,所以print(list04[0])同样也会变
print(list04[0])  #因为是另外复制的列表,所以当list03内容变化时,list04并不会变。

张无忌

#就切片的情况又有不同的地方,假如列表中有元素也是列表时,因为外层列表存放的内层列表的内存地址,所以即便切片复制了新的列表,
#新的列表保存的地址也是不变的。
list05 = [800,[900,500]]  #list05中存放的是列表的地址
list06 = list05[:]  #因为进行了切片操作,此时内存中生成了一个和list05一样的列表,并把它的地址赋给了list06,但是复制生成的新列表之中
#保存的地址因为是一样的,所以指向的内容也是一样的。
list05[1][0] = 1000  #这段通过list05改变了列表中的列表[900,500]的内容,list06虽然是复制的,但相同的内存地址指向的也是[900,500]的地址
#[900,500]变成了[1000,500],所以print(list06[1][0])同样也会变
print(list06[1][0])  #画一下内存图就能清晰地分辨与上一种情况的差别。

1000

list02 = list01[:] 这种复制列表的方式叫做浅拷贝,只复制第一层,深层的变量不复制,例如列表中的列表就不进行复制。
list02 = list01.copy() 也是浅拷贝,功能与list02 = list01[:]相同。
#深拷贝,对对象完全拷贝,包括深层变量
import copy

list07 = [800,[900,500]]
list08 = copy.deepcopy(list07)
list07[1][0] = 1000
print(list08[1][0])
#深拷贝,对对象完全拷贝,包括深层变量
import copy

list07 = [800,[900,500]]
list08 = copy.deepcopy(list07)
list07[1][0] = 1000
print(list08[1][0])

900

list_1 = [54,25,12,42,35,17]
list_2 = []
for i in list_1:
    if i > 30:
        list_2.append(i)
        list_1.remove(i)
print(list_1)
print(list_2)

[25, 12, 35, 17]
[54, 42]

list_01 = []
for i in range(0,5):
    num = int(input("请输入数字%d:"%(i+1)))
    list_01.append(num)
    i += 1
print(list_01)

maxnum = list_01[0]
for i in list_01:
    if i > maxnum:
        maxnum = i
print("最大值是:%d"%maxnum)

请输入数字1:123
请输入数字2:5651
请输入数字3:6513
请输入数字4:15
请输入数字5:6516
[123, 5651, 6513, 15, 6516]
最大值是:6516

list_05 = [53,25,12,54,35,17]
max_num = list_05[0]
for i in list_05:
    if i > max_num:
        max_num = i
print("最大值是:%d"%max_num)

最大值是:54

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值