学习python的第二周 第一天

#学习python的第二周

——第一天

在这里插入图片描述

作业的修正

  • 输入三个整数,按照从大到小的顺序输出

    a = int(input('a = '))
    b = int(input('b = '))
    c = int(input('c = '))
    
    if a < b:
        a, b = b, a
    
    if a < c:
        a, c = c, a
    
    if c > b:
        b, c = c, b
    
    print(a, b, c)
    
  • 向列表中添加10个随机整数,找出其中第2大的元素

    import random
    
    nums = []
    for _ in range():
        temp = random.randrange(1,100)
        nums.append(temp)
    print(nums)
    
    max_value = max(nums)
    #通过remove操作从列表中删除指定的元素
    
    nums.remove(max_value)  
    #删除列表中的最大值
    
    print(max(nums))
    

    这种方法其实不是最优,从这个可以通过思想的代码得出相对最优的代码

    nums = [random.randrange(1, 100) for _ in range(10)]
    # nums = [i for i in range(1, 101, 2)]
    print(nums)
    
    m1, m2 = nums[0], nums[1]
    if m1 < m2:
        m1, m2 = m2, m1
    for num in nums[2:]:
        if num > m1:
            m1, m2 = num, m1
        elif num == m1:
            pass
        elif num > m2:
            m2 = num
    print(m2)
    
    生成推导式
    1.
    # 列表的生成式(推导式)---> 写法简明,效率更高
    nums = [random.randrange(1, 100) for _ in range(10)]
    等于
        for _ in range():
            temp = random.randrange(1,100)   
            nums.append(temp)
    
    
    2.nums = [i for i in range(1, 101, 2)]
    

列表

列表的定义

​ 在Python中,列表是由一系元素按特定顺序构成的数据序列,这样就意味着定义一个列表类型的变量,可以保存多个数据,而且允许有重复的数据。跟上一课我们讲到的字符串类型一样,列表也是一种结构化的、非标量类型,操作一个列表类型的变量,除了可以使用运算符还可以使用它的方法。

list()函数可以将序列变成列表——即创造列表的构造器。

1.列表的创造

items1 = list(range(1, 10))
print(items1)    # [1, 2, 3, 4, 5, 6, 7, 8, 9]
items2 = list('hello')
print(items2)    # ['h', 'e', 'l', 'l', 'o']

# 创建列表的方式一:字面量语法
list1 = ['apple', 'orange', 'pitaya', 'durian']
print(list1)
#['apple', 'orange', 'pitaya', 'durian']

# 创建列表的方式二:构造器语法
list2 = list(range(1, 10))
print(list2)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 创建列表的方式三:生成式(推导式)语法
list3 = [i ** 2 for i in range(1, 10)]
print(list3)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]

2.列表的位置和切片,元素的次数

  • 位置

    items = ['Python', 'Java', 'Java', 'Go', 'Kotlin', 'Python']
    
    # 查找元素的索引位置
    
    print(items.index('Python'))       # 0
    # 从做开始找的第一个指定元素的位置
    
    print(items.index('Python', 2))    # 5
    # 从指定位置后开始找指定元素的位置
    
    
    # 注意:虽然列表中有'Java',但是从索引为3这个位置开始后面是没有'Java'的
    print(items.index('Java', 3))     
    # ValueError: 'Java' is not in list
    
  • 切片

    根据列表元素的位置进行切片

    import random
    
    nums = [random.randrange(1, 100) for _ in range(9)]
    print(nums)
    
    # 从位置二开始取到最后一个位置
    print(nums[2:])
    # 输出全部元素
    print(nums[::])
    # 反转
    print(nums[::-1])
    # 从位置1取到位置2
    print(nums[1:3])
    # 从位置2取到位置7,步长为2
    print(nums[2:7:2])
    # 位置输入错误,超出范围,切片位置不能这样写
    print(nums[10:15])
    print(nums[5:1])
    
  • 次数

    计算出指定位置的元素的出现总次数:count()函数

    items = ['banana', 'grape',              			'apple','waxberry',
            'pitaya', 'apple']
    
    # count() ---> 统计元素在列表中出现的次数
    print(items.count('apple'))
    print(items.count('strawberry'))
    

3.列表也支持拼接、重复、成员运算、索引和切片以及比较运算

  • 拼接

    list5 = [1, 3, 5, 7]
    list6 = [4, 4, 8]
    
    # 1
    list5 += list6
    print(list5)
    
    # 2
    list5.extend(list6)
    print(list5)
    
  • 重复

    list4 = [1, 10, 100] * 5
    print(list4)
    
  • 比较

    # 比较 ---> 实际工作中使用较少(可以忽略不计)
    list7 = list(range(1, 8, 2))
    list8 = [0, 3, 5, 7, 9]
    
    # 比较两个列表的元素是否意义对应相等
    print(list5 == list7)![在这里插入图片描述](https://img-blog.csdnimg.cn/cover1/248667912046641316.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,image_MjAyMDA3MTUxNjIxMDEzOC5wbmc=,size_16,color_FFFFFF,t_70,image/resize,m_lfit,w_962#pic_center)
    
    print(list7 != list8)
    
    # 比较两个列表对应元素的大小,不是比较len()的大小
    print(list7 < list8)
    
    # False
    # True
    # False
    
  • 添加和删除,清除

    items = ['banana', 'grape', 'apple',   				 'waxberry', 'pitaya', 'apple']
    
    # count() ---> 统计元素在列表中出现的次数
    print(items.count('apple'))
    print(items.count('strawberry'))
    
    # 添加元素
    items.append('blueberry')
    items.insert(1, 'watermelon')
    print(items)
    
    # 删除元素
    # pop()函数删除指定位置的元素,并返回该值
    items.pop()
    items.pop(4)
    # 删除指定位置的元素
    del items[0]
    # 删除该元素,但正向删除会打乱元素的位置,一般()是元素本身
    while 'apple' in items:
        items.remove('apple')
    print(items)
    
    # 清空列表元素
    items.clear()
    print(items)
    
  • 反转和排序

    items = ['banana', 'grape', 'apple', 'waxberry', 'pitaya', 'apple']
    # 反转
    items.reverse()
    print(items)
    
    # 排序(可以修改reverse参数控制排升序或者排降序)
    items.sort()
    print(items)
    
  • 随机抽取和乱序

    names = ['喜羊羊''美羊羊', '懒洋洋', '沸羊羊', 		  '暖羊羊', '灰太狼', '小灰灰']
    # sample函数可以对列表元素进行无放回抽样,抽五个
    print(random.sample(names, k=5))
    # choices函数可以对列表元素进行有放回抽样(可以重复抽中),抽五个
    print(random.choices(names, k=5))
    # choice函数可以从列表中随机选择一个元素
    print(random.choice(names))
    # shuffle函数可以实现列表元素的随机乱序
    random.shuffle(names)
    print(names)
    

列表的生成式

1.用for循环的生成

# 1
nums = []
for x in range(1,10):
    nums.append(x)
print(nums)

# 2
#对列表进行读写操作的for循环
for i in range(nums):
    print(nums[i])
    nums[i] = 100
print(nums)

# 对列表进行读操作
for x in nums:
    print(x)
    x= 100
print(nums)

# 3
# 创建一个由'hello world'中除空格和元音字母外的字符构成的列表
items2 = []
for x in 'hello world':
    if x not in ' aeiou':
        items2.append(x)
print(items2)

# 创建一个由个两个字符串中字符的笛卡尔积构成的列表
items3 = []
for x in 'ABC':
    for y in '12':
        items3.append(x + y)
print(items3)

2.通过生成式创建列表。

# 创建一个由1到9的数字构成的列表
items1 = [x for x in range(1, 10)]
print(items1)    
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 创建一个由'hello world'中除空格和元音字母外的字符构成的列表
items2 = [x for x in 'hello world' if x not in ' aeiou']
print(items2)  
# ['h', 'l', 'l', 'w', 'r', 'l', 'd']

# 创建一个由个两个字符串中字符的笛卡尔积构成的列表
items3 = [x + y for x in 'ABC' for y in '12']
print(items3)   
# ['A1', 'A2', 'B1', 'B2', 'C1', 'C2']

总结

以一个程序结尾:

​ 有15个男人和15个女人坐船出海,船坏了,需要把其中15个人扔到海里,其他人才能活下来;
所有人围成一圈,由某个人从1开始依次报数,报到9的人被扔到海里,下一个人重新从1开始报数,
直到将15个人扔到海里。最后,15个女人都幸存了下来,15个男人都被扔到了海里。
问原先哪些位置是男人,哪些位置是女人

persons = [True] * 30
index, counter, number = 0, 0, 0
while counter < 15:
    if persons[index]:
        number += 1
        if number == 9:
            persons[index] = False
            counter += 1
            number = 0
    index += 1
    if index == 30:
        index = 0
for person in persons:
    # 三元条件运算 ---> if后面的表达式为True,取if前面的值,否则取else后面的值
    # 相当于简写版(精简版)的if...else...结构
    print('女' if person else '男', end='')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值