如何在循环中迭代这个列表?我是一名初学者,Python是我的第一门语言
Zybooks 指令
数据列表 data_list 包含从输入中读取的整数,表示一系列数据值。对于 data_list 中从 1 到倒数第二个索引的每个索引 i:
如果索引 i 处的元素比前一个元素和后一个元素都大,那么这个元素就是一个“预感”。如果索引 i 处的元素是一个“预感”,那么就输出 'Hunch: ',后面跟着前一个元素、当前元素和后一个元素,每个元素之间用空格隔开。
示例
例如:如果输入是 12 14 72 52,那么输出是:
- 序列: [12, 14, 72, 52]
- 预感: 14 72 52
Zybooks 代码
tokens = input().split()
data_list = []
for token in tokens:
data_list.append(int(token))
print(f'Sequence: {data_list}')
我完成 zybooks 代码的代码
for i, data in enumerate(data_list[1: -2]):
if data_list[i] > data_list[i - 1] and data_list[i] > data_list[i + 1]:
print(f"Hunch: {data_list[i - 1]} {data_list[i]} {data_list[i + 1]}")
使用 12, 14, 72, 52 的输出##
- 序列: [12, 14, 72, 52]
5 个回答
0
更简洁的输入方式,以及四种解决方案。
seq = list(map(int, input().split()))
for a, b, c in zip(seq, seq[1:], seq[2:]):
if a < b > c:
print('Hunch:', a, b, c)
a, b = seq[:2]
for c in seq[2:]:
if a < b > c:
print('Hunch:', a, b, c)
a, b = b, c
a = b = None
for c in seq:
if None is not a < b > c:
print('Hunch:', a, b, c)
a, b = b, c
b = float('nan')
for c in seq:
if c < b > a:
print('Hunch:', a, b, c)
a, b = b, c
0
你在问题中没有提到列表里会有多少组提示。也就是说,是只有一组提示,还是有多组提示。假设列表里会有多组提示,我给出了一个解决方案。你可以根据自己的需求修改代码。理解一下如何使用f-string,然后相应地调整代码。
l = [12, 14, 72, 52, 22, 78, 33]
hunches = []
# Index based iteration till the last but one element
for i in range(1,len(l)-1):
#if the number is greater than both previous and next number, make a list
if l[i-1] < l[i] > l[i + 1]:
sub = f'{l[i-1]} {l[i]} {l[i+1]}'
# append this list to the list hunches
hunches.append(sub)
print(f'Hunches: {hunches}') #Output: Hunches: ['14 72 52', '22 78 33']
1
enumerate
这个函数总是从零开始计数,除非你给它一个 start
参数,所以当你对列表进行切片后,索引就不再代表原来的位置了。
因为你没有用到 data
这个变量,所以直接使用 range
就可以了。
for i in range(1, len(data_list) - 1):
if data_list[i - 1] < data_list[i] > data_list[i + 1] :
print("Hunch: " + ' '.join(tokens[i-1:i+2]))