列表错题本

发布时间:2024年01月19日

概念题:

1.如果有一个列表?list1,有两种方法可以获取到该列表的最后一个元素,你知道分别是什么吗?

答:list1[len(list1) - 1]? ? 和? ?list1[-1]1:Yka
^zsg4exIZ-w6jX2H$7) 9c},k(L+
解析:使用下标索引的方式可以实现列表的随机访问(就是你想访问哪个元素就访问哪个)。(>0o&h4lC
dKxAOm}MWD?$T+|G`BSqv:p>3J~Y2
这第一种方法是先使用?len()?函数计算列表的长度,然后 -1 是因为下标索引值是从 0 开始数起的。@9dfE
`mN^cCh)@p*QEK2ObeV{
第二种方法看上去更加 “老司机”,因为你知道 Python 是允许反向索引的,下标值为 -1,则表示直接访问最后一个元素。

2.请问下面代码打印的结果是什么?

[1, 2, 3, 4, 5][:3]

正解:[1,2,3]?

3.请问下面代码打印的结果是什么?

[5, "上", 4, "山", 3, "打", 2, "老", 1, "虎"][-2::-2]

正解:首先,切片操作 [::-1] 是将列表前后翻转:

[5, "上", 4, "山", 3, "打", 2, "老", 1, "虎"][::-1]
['虎', 1, '老', 2, '打', 3, '山', 4, '上', 5]

然后,将跨度值设置为 2([::2])代表每提取一个元素,就跨过下一个元素,那么设置为 -2([::-2])就表示提取的顺序是带跨度的倒着来:

[5, "上", 4, "山", 3, "打", 2, "老", 1, "虎"][::-2]
['虎', '老', '打', '山', '上']

最后,既然是倒着来,我们设置它的起始元素为倒数第二个,所以结果就是 [1, 2, 3, 4, 5]:?

[5, "上", 4, "山", 3, "打", 2, "老", 1, "虎"][-2::-2]
[1, 2, 3, 4, 5]

3.?下面有两列表,请问如何将?list2?列表中的全部元素,添加到?list1?列表中第 2 和第 3 个元素的中间

list1 = [1, 2, 8, 9]
list2 = [3, 4, 5, 6, 7]

?正解:利用切片大法

list1 = list1[:2] + list2 + list1[2:]
list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]

动手题

1.给定一个整数列表?nums?和一个目标值?target,请在该数组中找出和为目标值的两个元素,并将它们的数组下标值打印出来。

比如给定的列表?nums = [2, 7, 11, 15],目标值?target = 9,那么由于?nums[0] + nums[1] = 2 + 7 = 9,所以打印结果是:[0, 1]
?

nums = [2, 7, 11, 15]
target = 9

n = len(nums)
for i in range(n):
    for j in range(i+1, n):
        if nums[i] + nums[j] == target:
            print([i, j])

?这里两层嵌套循环的执行逻辑就是:外层循环获取一个被加数,然后和内层循环获取的每一个加数进行相加,判断它们的和是否等于?target?变量的值?如果是,则打印结果

2.这次我们想让用户自己来录入?nums?和?target?的数据……

nums = []

isInput = True
while isInput == True:
    x = input("请录入一个整数(输入STOP结束):")
    if x != "STOP":
        nums.append(int(x))
    else:
        isInput = False

target = int(input("请录入目标整数:"))

isFind = False
n = len(nums)
for i in range(n):
    for j in range(i+1, n):
        if nums[i] + nums[j] == target:
            print([i, j])
            isFind = True

if isFind == False:
    print("找不到!")

3.最后,回忆前面我们学习过的?random?模块,生成一个由 10000 个整数(范围是 1 ~ 65535)构成的随机列表,目标值?target?由用户输入。

import random

nums = []

for i in range(10000):
    x = random.randint(1, 65535)
    nums.append(x)

target = int(input("请录入目标整数:"))

isFind = False
n = len(nums)
for i in range(n):
    for j in range(i+1, n):
        if nums[i] + nums[j] == target:
            print([i, j])
            isFind = True

if isFind == False:
    print("找不到!")

?

文章来源:https://blog.csdn.net/python_20041027/article/details/135706777
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。