欢迎指错以及交流
列表推导式的语法是一种简洁的方式来创建列表。
在这个例子中,列表推导式的结构是 [int(i) for i in input().split(' ')]:
-
input().split(' '):将输入的一行字符串按空格分割成一个字符串列表。
-
int(i):将列表中的每个字符串转换为整数。
-
for i in input().split(' '):遍历字符串列表中的每个字符串。
因此,使用列表推导式可以方便地将输入的一行包含多个数字的字符串转换为整数列表,方便后续对这些数字进行操作,比如找出最大值等。
example:找最大值
print(max([int (i) for i in input().split(' ')]))
i for i 是Python中的列表推导式(list comprehension),用于快速创建列表。列表推导式的一般形式是 [expression for item in iterable if condition],其中 expression 是用来生成新元素的表达式,item 是迭代的元素,iterable 是可迭代对象,condition 是可选的筛选条件。
example:
# 定义队列list
queue_list = [1, 22, 34, 27, 3, 58, 69, 100, 3, 48, 95, 20]
# (1) 查找元素3所在的索引
index_3 = [i for i, x in enumerate(queue_list) if x == 3]
print("(1) 元素3所在的索引:", index_3)
# (2) 反向查找元素3所在的索引
reverse_index_3 = [i for i, x in enumerate(queue_list[::-1]) if x == 3]
reverse_index_3 = [len(queue_list) - i - 1 for i in reverse_index_3]
print("(2) 元素3在反向查找中的索引:", reverse_index_3)
# (3) 查找所有大于或小于50的元素
greater_than_50 = [x for x in queue_list if x > 50]
less_than_50 = [x for x in queue_list if x < 50]
print("(3) 大于50的元素:", greater_than_50)
print(" 小于50的元素:", less_than_50)
# (4) 从元素58开始查找元素3所在的索引
index_3_after_58 = [i for i, x in enumerate(queue_list[queue_list.index(58):]) if x == 3]
if index_3_after_58:
index_3_after_58 = index_3_after_58[0] + queue_list.index(58)
else:
index_3_after_58 = -1
print("(4) 从元素58开始查找元素3所在的索引:", index_3_after_58)
# (5) 把索引为7的元素的值修改成66
queue_list[7] = 66
print("(5) 修改索引为7的元素的值为66后的队列:", queue_list)
以下是代码的详细解释:
-
(1) 查找元素3所在的索引:
-
使用列表推导式 [i for i, x in enumerate(queue_list) if x == 3],遍历队列 queue_list 中的元素和对应的索引,找出所有值为3的元素的索引。
-
-
(2) 反向查找元素3所在的索引:
-
使用列表推导式 [i for i, x in enumerate(queue_list[::-1]) if x == 3],将队列逆序后遍历元素和对应的索引,找出所有值为3的元素在逆序队列中的索引。
-
将逆序队列中的索引转换回原队列中的索引。
-
-
(3) 查找所有大于或小于50的元素:
-
使用列表推导式 [x for x in queue_list if x > 50] 和 [x for x in queue_list if x < 50],找出队列中大于50和小于50的元素。
-
-
(4) 从元素58开始查找元素3所在的索引:
-
使用列表推导式 [i for i, x in enumerate(queue_list[queue_list.index(58):]) if x == 3],从元素58开始截取队列并遍历元素和对应的索引,找出元素3在截取队列中的索引。
-
如果找到元素3,则将索引转换回原队列中的索引。
-
-
(5) 把索引为7的元素的值修改成66:
-
直接通过索引访问队列元素并修改值,例如 queue_list[7]
-