• Python练习之列表


    1、输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列。

    a=input("输入列表元素:")
    item=a.split(" ")
    list=[eval(x) for x in item]
    list.sort(key=None,reverse=True)
    print(list)
    
    输入列表元素:1 2 3 7 5
    [7, 5, 3, 2, 1]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、列表生成式。使用列表生成式生成列表,其元素为 100 以内所有能被 3 整除的数。

    list=[x for x in range(100) if x%3==0]
    print(list)
    
    [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    
    • 1
    • 2
    • 3
    • 4

    3、给出一个包含若干整数的列表[23,16,18,19,76,121,33,57,80],输出一个新列表,要求新列表中只包含原列表中的偶数。提示:可以使用 list、filter、lambda 函数完成。

    this_list=[23,16,18,19,76,121,33,57,80]
    new_list=list(filter(lambda x:x%2==0,this_list))
    print(new_list)
    
    • 1
    • 2
    • 3

    4、给出一个包含若干整数的列表[23,16,18,19,76,121,33,57,80],输出列表中的所有整数连乘的结果。提示:可以使用 reduce、lambda 函数完成。

    from functools import reduce
    
    a=[23,16,18,19,76,121,33,57,80]
    result=reduce(lambda x,y:x*y,a)
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、列表切片

    编写程序,用户输入一个列表和两个整数作为下标,然后用切片获取并输出介入两个下标之间的元素组成的子列表。例如,用户输入[1,2,3,4,5,6]和 2,5 后,程序输出[3,4,5,6]

    a=input("输入列表元素:")
    item=a.split(" ")
    l=[eval(x) for x in item]
    print(l)
    x=int(input("start:"))
    y=int(input("end:"))
    print(l[x:y:])
    
    
    输入列表元素:1 2 3 4 5 6
    [1, 2, 3, 4, 5, 6]
    
    start:2
    
    end:5
    [3, 4, 5]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    6、单词长度(crr23)

    输入一句英文句子,例如:the scenery along the should be and the mood at the view,输出其中最长的单词及长度。

    sentence=input("请输入一句英文:")
    word=sentence.split() # 把句子分成单词
    length=[len(x) for x in word] # 每个单词的长度
    lens=max(length)
    print("字母{}及其长度{}".format(word[length.index(lens)],lens)) # 最长字母第一次出现的位置,通过下标找到该字母
    
    the scenery along the should be and the mood at the view
    ['the', 'scenery', 'along', 'the', 'should', 'be', 'and', 'the', 'mood', 'at', 'the', 'view']
    [3, 7, 5, 3, 6, 2, 3, 3, 4, 2, 3, 4]
    字母scenery及其长度7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    7、输入两个分别包含 2 个整数的列表,分别表示城市中两个地点的坐标,输出两个点之间的曼哈顿距离

    曼哈顿距离是指在城市中两个地点的坐标上,通过计算水平和垂直方向上的距离之和得出的距离。对于给定的两个点p1 = (x1, y1) 和 p2 = (x2, y2),曼哈顿距离可以通过计算|x1 - x2| + |y1 - y2|来得到。在编程中,可以输入两个包含2个整数的列表,分别表示两个地点的坐标,然后使用这个公式计算出曼哈顿距离

    point1 = eval(input("请输入point1的坐标列表:"))
    point2 = eval(input("请输入point2的坐标列表:"))
    distance = map(lambda x, y: abs(x - y), point1, point2)
    manhattan_distance = sum(distance)
    print("两个点间的曼哈顿距离:", manhattan_distance)
    
    
    请输入point1的坐标列表:[1,2]
    
    请输入point2的坐标列表:[3,4]
    两个点间的曼哈顿距离: 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    8、高考录取率(列表与元组 crr39)

    根据十年高考录取率表创建列表,并完成如下操作:
    ① 计算十年平均录取率。
    ② 找出录取率最高的年份。
    在这里插入图片描述

    year=[(2006,57),(2007,56),(2008,57),(2009,62),(2010,67),(2011,72),(2012,75),(2013,76),(2014,74.3),(2015,74)]
    
    rate=[x[1] for x in year]
    avg=sum(rate)/len(rate)
    print("平均录取率{}".format(avg))
    max_avg=max(rate)
    max_year=year[rate.index(max_avg)]
    print("录取最高年份{}".format(max_year[0]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    9、列表二分查找(crr65)

    二分查找是一个经典的算法,用来在有序的一组数中快速找到待查找的数。所谓“二分”,
    就是每次操作都将查找范围一分为二,即将查找区间缩小一半,直到找到或查询了所有区间
    都没有找到要查找的数据为止。利用二分查找法,查找[34, 64, 67, 72, 73, 82, 83, 85, 87, 88, 90,
    91, 96, 98]中指定数字的索引号

    l=[34,64,67,72,73,82,83,85,87,88,90,91,96,98]
    x=int(input("请输入待查找的数:"))
    low=0
    high=len(l)-1
    
    while low<=high:
        mid=(low+high)//2
        if l[mid]<x:
            low=mid+1
        elif l[mid]>x:
            high=mid-1
        else:
            print("THE NUMBER {} IS FOUND,AND THE INDEX IS {}".format(x,mid))
            break;
    else:
        print("THERE IS NO{} IN THE LIST".format(x))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    10、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。

    要求:利用列表、内置函数 enumerate()、filer()来实现。

    maxNumber=int(input("请输入一个大于2的自然数:"))
    lst=list(range(2,maxNumber))
    #最大整数的乎方板
    m=int(maxNumber**0.5)
    for index,value in enumerate(lst):
        #如果当前数字已大于最大整数的乎方根,结束判断
        if value > m:
            break
        lst[index+1:]=filter(lambda x:x%value !=0,list[index+1:])
    print(lst)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    规则解读(一)| 本地资源检测 For Unreal
    奇怪的bug
    torchvision.models中模型编辑的requires_grad
    rabbitmq 保姆级安装教程
    横板格斗类游戏实战:UI框架的制作
    Android 常用 UI 组件
    【傻瓜式教程】Windows下安装Hive MySQL版【附安装Hadoop教程】全网最详细的图文教程
    【Java SE】4. 运算符中的有趣现象
    检查OpenGL的版本
    【从零开始学习 SystemVerilog】11.3、SystemVerilog 断言—— Concurrent Assertions(并发断言)
  • 原文地址:https://blog.csdn.net/qq_52108058/article/details/133102583