Python编程语言有哪些鲜为人知但有用的功能?
"关键字参数"与常规参数有何不同?不能传递所有参数name=value而不是使用位置语法?
python arguments keyword optional-parameters named-parameters
s = [1,2,3,4,5,6,7,8,9]
n = 3
zip(*[iter(s)]*n) # returns [(1,2,3),(4,5,6),(7,8,9)]
Run Code Online (Sandbox Code Playgroud)
zip(*[iter(s)]*n)工作怎么样?如果用更详细的代码编写它会是什么样子?
python docs将此代码作为zip的反向操作:
>>> x2, y2 = zip(*zipped)
Run Code Online (Sandbox Code Playgroud)
特别是"zip()与*运算符一起使用可以解压缩列表".有人可以向我解释*运算符在这种情况下是如何工作的吗?据我所知,*是一个二元运算符,可用于乘法或浅拷贝......这两者似乎都不是这种情况.
Python 3学习者:
这个问题有以下公认的答案:
rr,tt = zip(*[(i*10, i*12) for i in xrange(4)])
Run Code Online (Sandbox Code Playgroud)
返回两个元组.如果有人可以打破答案并解释它在Python 3中做了什么(我知道range()在Python 3中返回迭代器),我将不胜感激.我理解列表理解但是我对解压缩感到困惑(我认为你只能使用星号表达式作为赋值目标的一部分).
我同样对以下代码感到困惑.我理解结果和拉链(或者我认为),但是星号表达再次击败了我.
x2, y2 = zip(*zip(x, y))
Run Code Online (Sandbox Code Playgroud)
从这个:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True
Run Code Online (Sandbox Code Playgroud)