MST
星途 面试题库

面试题:Python复杂列表推导式的实现

有两个列表,list1 = [1, 2, 3],list2 = [4, 5, 6]。请使用列表推导式生成一个新列表,新列表中的元素是由list1和list2中对应位置元素相乘后再平方得到的。如果两个列表长度不一致,忽略多出的部分。并解释在该列表推导式中涉及的运算逻辑和Python语法特性。
44.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

新列表推导式如下:

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)

运算逻辑

  1. range(min(len(list1), len(list2))):通过min函数获取list1list2长度的最小值,以此作为range函数的参数,这样可以确保循环次数是两个列表中长度较短的那个列表的长度,从而忽略长度不一致时多出的部分。
  2. list1[i] * list2[i]:在每次循环中,取出list1list2中相同索引位置i的元素并相乘。
  3. (list1[i] * list2[i]) ** 2:将相乘后的结果进行平方。
  4. [(list1[i] * list2[i]) ** 2 for i in range(min(len(list1), len(list2)))]:使用列表推导式将上述运算结果组成一个新的列表。

Python语法特性

  1. 列表推导式:是Python中一种简洁的创建列表的方式,它允许在一行代码中通过对可迭代对象进行迭代、筛选和转换操作来生成新的列表。其基本语法为[expression for item in iterable if condition],其中expression是对item进行的操作,if condition是可选的筛选条件。在本题中,没有使用筛选条件。
  2. range函数:用于生成一个整数序列,通常用于循环控制。
  3. min函数:用于返回多个参数中的最小值,在本题中用于确定循环的次数,以处理列表长度不一致的情况。
  4. 索引访问:在Python列表中,可以通过索引(从0开始)访问列表中的元素,如list1[i]list2[i]
  5. 运算符*用于乘法运算,**用于幂运算。