【发布时间】:2019-07-10 02:44:27
【问题描述】:
我经常在 python 3 中一次编译一个元素的列表;比如说我通过一个带有第一个元素 head 的链表来制作一个列表:
l = []
while head:
l.append(head.val)
head = head.next
我想知道最佳实践是什么。有没有另一种写法?是否可以在一行中描述列表,而不是这样:
while head:
l = # something creating the list AND appending elements
head = head.next
更好的是:在类似情况下我是否总是必须使用循环来创建列表,或者是否经常有方法可以在一行中创建所需的列表?
谢谢!
编辑:代码中的错字!
【问题讨论】:
-
是的。查看列表推导!你可以做很复杂的事情,比如
[i for i in range(10) if i % 2 == 0]google上的第一个教程:hackernoon.com/list-comprehension-in-python-8895a785550b -
@Reedinationer:列表推导有其局限性——Python 3.8 的主要变化之一将是能够在表达式中进行赋值,并且大部分目的是让列表推导更强大.对我来说,如何通过理解来解决提问者的问题并不明显(不使用为此目的创建的函数)。
-
您是否经常使用自己的定制链表?
-
@juanpa.arrivillaga 是的,它们的公式与 Olivier Melançon 的回答中所写的一样
-
@Jeffery 请问为什么?他们提供了什么标准库没有提供的东西?例如只是香草
list或collections.deque?
标签: python python-3.x list append