python基础学习005_列表与元组

"""
1.列表的定义:类实例化和基础定义
2.列表的下标和切片:逆置,切片法与reverse方法
3.列表的增append,extend,insert.删pop remove clear,改查index操作
4.列表排序sort,sort(reverse = True)
5.列表推导式
5.抽签游戏
6.元组
"""
import random

# 列表:list可以存储多个数据,数据类型不限,用逗号隔开

# 列表定义:类实例化的方式1(不常用)
list1_1 = list()  # 定义一个空列表
print('列表内容:', list1_1, '数据类型:', type(list1_1))
# 列表定义:类实例化的方式2(类型转换)list(容器)
list1_2 = list('love')
print('类型转换后为:', list1_2)
# 列表定义:直接使用[]进行定义(常用)
list1_3 = []
print('列表内容:', list1_3, '数据类型:', type(list1_3))
list1_4 = ['good', 'good', 'study', 666, True, 3.1415926]
print('列表内容:', list1_4, '数据类型:', type(list1_4))


print([1, 2]+[3, 4])      # 列表的加法
print([1, 2]*3)              # 列表的乘法


# 列表的下标与切片:与字符串的下标与切片方法相同
# 不同的是切片结果是列表,下标取到的结果是列表数据的实际类型,不是列表
print(list1_4[1] + list1_4[2])  # 下标同样从0开始计数
print(list1_4[-2])  # 同样支持负数下标
print('列表的第四个值是:', list1_4[3], '它的数据类型是:', type(list1_4[3]))
print(list1_4[::2])  # 从0开始到最后一个值,步长为2,隔一个取一个,结果是列表
# 列表翻转(逆置)
print(list1_4[::-1])  # 步长为-1则翻转列表,生成了新列表
rev_list = list1_4.reverse()
print(list1_4)  # 翻转列表,直接在原列表修改

# 列表的查询,列表没有find,使用的是index(),用法与find相同
# index(数据,start,end),找到返回第一次出现的下标,未找到直接报错
list2 = ['good', 'good', 'study', 666, True, 3.1415926, 0.550]
print('查找结果:', list2.index(666, 2, 4))
# print('查找结果:', list2.index(666, 4, 6))        会导致程序直接报错
# 判断容器中某个数据是否存在,可以使用in关键字
# 数据 in 容器.存在返回True,不存在返回False,可作为分支判断条件
print('666是否在list2中存在:', 666 in list2)
if 666 in list2:
    print('存在')
else:
    print('不存在')
# 统计出现次数
# list.count(数据),返回数据出现的次数,可作为分支判断条件
print("'good'在list2中总共出现过:", list2.count('good'), '次')
if list2.count('good') > 0:
    print("'good'在list2中总共出现过:", list2.count('good'), '次')
else:
    print("该数据不存在")

# 列表的添加:改变了原列表的值,需要查看原列表才能看到添加结果
# 尾部添加:list.append(数据),返回值为None
list3 = ['good', 'good', 'study', 666, True, 3.1415926, 0.550]
list3_1 = list3.append('詹丹')
print(list3, list3_1)  # list3_1只保存append的返回值为None,要看添加结果需要看原列表
# 指定位置添加:list.insert(下标,数据)
list3_2 = list3.insert(3, 1254)
print(list3, list3_2)
# 列表的合并:list1.extend(list2[]),将列表2中所有数据逐个添加至列表1的尾部
list3_3 = ['张三', 47, 0.1]
list3_4 = list3.extend(list3_3)
print(list3, list3_4)
list3_5 = list3.extend(['mmm'])
print(list3, list3_5)
# append和extend的区别:
# append把列表当成1个数据添加至末尾,这个列表就作为原列表的一个元素,
# extend是将列表的元素取出逐个添加给原列表作为元素,自己有多少个元素就给原列表添加多少个
list4 = ['good', 'good', 'study', 666, True]
print(list4)
list4.append(['kjasgd', 13, 0.11])
print(list4)
list4.extend(['weed', 54])

# 列表的修改:list[n] = 数据
# 如果指定的下标不存在,导致程序报错
list5 = ['good', 'good', 'study', 666, True]
list5[2] = 20
print(list5)

# 列表的删除:在列表中删除数据,后面的数据会向前递补
# 根据下标删除
list6 = ['good', 'good', 'study', 666, True]
del_vul = list6.pop(2)  # 不写下标默认删除最后一个,返回值是删除掉的数据
print('删除的数据值为:', del_vul, '删除后的列表是:', list6)
# 根据数据值删除
list6.remove("good")  # 返回值为None,如果要删除的数据不存在会报错,如果有重复数据,删除第一个
print(list6)
# 清空数据
list6.clear()
print(list6)

# 列表的复制:将列表中的数据复制一份给一个新的列表
# 使用场景:需要修改列表数据,但是修改后的数据需要跟原列表作对比,需要给原列表做备份
# 使用切片变量=list[:]
list7 = [1, 2, 3, 4, 5, 6]
list7_1 = list7[:]
print('list7:', list7)
print('list7_1', list7_1)
# copy方法:变量=list.copy()
list7_2 = list7.copy()
print('list7_2:', list7_2)
# 别名调用
list7_3 = list7  # 两个变量是同一个列表,只是不同名称,调用

# 列表排序
# 通常是对数字进行排序,list.sort()升序,list.sort(reverse = True)降序
list8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
list8.sort()  # 返回值为None
print(list8)
list8.sort(reverse=True)  # 返回值为None
print(list8)

# 列表的嵌套,列表的元素还是列表
# 使用下标来确定获取的数据是什么类型,来决定接下来做什么操作
list9 = ['good', 'good', ['study', 666, True], ['好好学习', ['天天向上', 20, False], 2023]]
print(list9[-1][0])  # 取嵌套列表的值
list9[-1][1][-1] = True
print(list9)
list9[2].remove(666)
print(list9)

# 列表推导式
listx = [random.randint(1, 10) for i in list4]
listy = [i for i in list4]
print(listx)  # 为列表的每个值加一个随机值
print(listy)  # 将list4导给listy

# 抽签游戏
name = ['张三', '李四', '王五', '赵六', '冯其']
bingo_list = []
input('欢迎来到抽签游戏,按回车键开始游戏:')
while True:
    chose = int(input('按1开始抽奖,按0退出游戏,请继续输入:'))
    if chose == 1:
        num = random.randint(0, 4)
        print("本次抽中的幸运儿是:", name[num])
        bingo_list.append(name[num])
        print('历次获奖名单有:', bingo_list)
    elif chose == 0:
        print('退出游戏,游戏结束!')
        break
    else:
        print("请按照提示输入代号:")
"""
Python自带的random库
       1.参生n--m范围内的一个随机数:    random.randint(n,m)
       2.产生0到1之间的浮点数:  random.random()
       3.产生n---m之间的浮点数:  random.uniform(1.1,5.4)
       4.产生从n---m间隔为k的整数: random.randrange(n,m,k)
       5.从序列中随机选取一个元素:  random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
       6.在一些特殊的情况下可能对序列进行一次打乱操作: random.shuffle([1,3,5,6,7])
"""
# 抽签游戏二:名单随机输入
name = []
winner_list = []
input('欢迎来到抽签游戏,按回车键开始游戏:')
while True:
    name.append(input('请输入游戏名单(每输完一个名称按回车键继续,全部输完按b开始抽签):'))
    if name[-1] == 'b':
        break
    else:
        continue
while True:
    chose = int(input('按1开始抽奖,按0退出游戏,请继续输入:'))
    if chose == 1:
        winner = random.choice(name)
        print("本次抽中的幸运儿是:", winner)
        winner_list.append(winner)
        print('历次获奖名单有:', winner_list)
    elif chose == 0:
        print('退出游戏,游戏结束!')
        break
    else:
        print("请按照提示输入代号:")

# 元组:tuple元组中的数据内容不能改变,列表中的数据内容可更改
# 主要在函数传参中使用,保证内容不会变化
# 元组的定义1:类实例化,内容无法改变,所以不会这样用的,了解即可
tup1_1 = tuple()
# 元组的定义2:类型转换,将列表转换为元组,同样也可以将元组转换成列表
li = [1, 2, 3]
tup1_2 = ([1, 2, 3, 4])
tup1_3 = (li)
print(tup1_2, tup1_3)
# 元组定义3:
tup1_4 = (0, 9, 8, 7)
# 只有一个数据时,必须加一个逗号,否则不是元组.有多个数据时,数据末尾的最后一个逗号可加可不加
tup1_5 = (1,)
tip1_6 = (1)
tup1_7 = (1, 2, 3,)
tup1_8 = (1, 2, 3)
print(type(tup1_5), type(tip1_6), type(tup1_7), type(tup1_8))

# 元组也支持下标和切片
tup2 = ('行三', 20, 2014, 3.2)
print(tup2[2])
print(tup2[::-1])

# 元组同样支持index,count,in,len
tup3 = ('good', 'good', ['study', 666, True], ['好好学习', ['天天向上', 20, False], 2023], (12, 23, 23))
print(tup3[3], type(tup3[3]))
print(tup3.index('good', 1, len(tup3) - 1))
print(tup3.index('good'))
print(tup3.count('good'))
print(('good' in tup3))
print('good' in tup3)
print(len(tup3))
print(type(tup3[-1]))

print((1, 2)+(3, 4))        # 元组的加法
print((1, 2)*3)             # 元组的乘法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值