概念题:
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("找不到!")
?