面试题答案
一键面试新列表推导式如下:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
new_list = [(list1[i] * list2[i]) ** 2 for i in range(min(len(list1), len(list2)))]
print(new_list)
运算逻辑:
range(min(len(list1), len(list2)))
:通过min
函数获取list1
和list2
长度的最小值,以此作为range
函数的参数,这样可以确保循环次数是两个列表中长度较短的那个列表的长度,从而忽略长度不一致时多出的部分。list1[i] * list2[i]
:在每次循环中,取出list1
和list2
中相同索引位置i
的元素并相乘。(list1[i] * list2[i]) ** 2
:将相乘后的结果进行平方。[(list1[i] * list2[i]) ** 2 for i in range(min(len(list1), len(list2)))]
:使用列表推导式将上述运算结果组成一个新的列表。
Python语法特性:
- 列表推导式:是Python中一种简洁的创建列表的方式,它允许在一行代码中通过对可迭代对象进行迭代、筛选和转换操作来生成新的列表。其基本语法为
[expression for item in iterable if condition]
,其中expression
是对item
进行的操作,if condition
是可选的筛选条件。在本题中,没有使用筛选条件。 range
函数:用于生成一个整数序列,通常用于循环控制。min
函数:用于返回多个参数中的最小值,在本题中用于确定循环的次数,以处理列表长度不一致的情况。- 索引访问:在Python列表中,可以通过索引(从0开始)访问列表中的元素,如
list1[i]
和list2[i]
。 - 运算符:
*
用于乘法运算,**
用于幂运算。