背景:

近期面试遇到一个比较基础的编程题,我哗哗哗写出来了,但是面试官并不满意,查了资料GET到以下一个小知识点供大家参考

需求:

寻找list中所有包含”t”的元素,并返回”,”间隔的字符串。
如输入test_list=[“hellotom”,”google”,”webUItest”,”jim”]
返回:”hellotom,webUItest”

我的写法:

  1. new_list = []
  2. for item in list111:
  3. if "t" in item:
  4. new_list.append(item)
  5. print(",".join(new_list))

面试官想要的:

new_list = [item for item in list111 if "t" in item]
print(",".join(new_list))

解读:

我的写法在C语言中更为常见,但是在python中效率很低,原因如下:
1.解释器在每次循环中都需要判断序列中的哪一部分需要修改。
2.需要一个计数器来跟踪需要处理的元素。
3.由于append()是一个列表方法,所以每次遍历时还需要额外执行一个查询函数。
列表推导正是解决这个问题的方法,也是面试官的考点,它使用编排好的功能对上述语法的一部分做了自动化处理。
这种写法除了更加高效之外,也更加简短,涉及到的语法元素也少,在大型程序中,这意味着更少的错误,代码也更加容易阅读和理解。

以上均为个人查阅资料理解,如有问题欢迎各位拍砖。