import random
liste = [random.randint(1, 5) for i in range(random.randint(2, 15))]]
a,*b,c = liste[0], liste[1:len(liste) - 1], liste[len(liste) - 1]


当我运行上面的代码时,我没有得到想要的结果。例如,对于b,我希望b为[4, 5, 2, 2, 3, 1, 4, 5, 4, 5, 3],但得到[[4, 5, 2, 2, 3, 1, 4, 5, 4, 5, 3]]。为什么列表中有列表,我该如何解决?

基本上,我想知道应该写些什么而不是liste[1:len(liste) - 1]。同样在我的要求中,我必须使用*b

最佳答案

如果您使用的是Python 3.5+,则可以改用:

a, *b, c = liste


这样,ac将是liste列表中的第一项和最后一项,而b将是它们之间的子列表,这显然是您的代码打算执行的操作。

关于python - 如何提取* args,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52478484/

10-12 18:27