因此,在Python 3.6中为发束创建测试用例时,我想知道是否存在一种很好的方法来执行诸如列表理解中的赋值之类的操作。我应该使用lambda吗?
我要插入
Prev_Node.next = Node(i)
Prev_Node = Node(i)
进入
iList = [1,2,3,4,10]
Prev_Node = Node(iList[0])
l1 = [Node(i) <Any assignment action?> for i in iList[1:])]
谢谢您的时间,
答案 0 :(得分:1)
使用迭代器遍历您的列表,不要在.Next
等文件中摆弄自己的内容。
如果您要查找列表的头和尾,则可以执行以下操作:
int_list = [1, 2, 3, 4, 10]
node_list = [Node(i) for i in int_list]
head = node_list[0] # Get the head Node and leave it in the list.
head, *tail = node_list # Get the head Node and remove it from the list.
并像
一样进行迭代for node in node_list:
print(node)
看看各种list function如何进一步操作现有列表。
答案 1 :(得分:0)
您不能在列表理解范围内进行分配。尝试这样做会引发`SyntaxError,例如:
[x = 0 for _ in range(1)]
# SyntaxError: invalid syntax
我想尝试实现这一目标的方法很糟糕,那就是定义一个您在列表推导中调用的函数,该函数执行赋值(使用全局变量)。但这比仅使用普通的for循环而不是列表理解要糟糕得多。基本上,任何时候都不能立即使用列表推导功能,最好使用for循环。对您来说,编程和其他人更容易理解。
# hacky; don't do this
def set_x(val):
global x
x = val
[set_x(i) for i in range(3)]
x # 2