Python 理解一行代码

Python 理解一行代码,python,Python,别人给了我一行代码,我很难理解 inputString = "[1,2,3,4,5,6,7,8,9,10,11,12]" a = inputString[1:-1].split(',') z = zip(a[::2],a[1::2]) # this line print a print z 我了解split功能及其工作原理。我甚至理解zip功能。我不明白的是a[::2],a(1::2)在做什么。我已经尝试过修改这些代码,并得到了不同的结果,但是没有任何东西可以让我理解修改代码的作用。我是Py

别人给了我一行代码,我很难理解

inputString = "[1,2,3,4,5,6,7,8,9,10,11,12]"

a = inputString[1:-1].split(',')
z = zip(a[::2],a[1::2]) # this line
print a
print z
我了解
split
功能及其工作原理。我甚至理解
zip
功能。我不明白的是
a[::2],a(1::2)
在做什么。我已经尝试过修改这些代码,并得到了不同的结果,但是没有任何东西可以让我理解修改代码的作用。我是Python新手,需要一些帮助

代码中典型的未修改结果如下所示:

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8'), ('9', '10'), ('11', '12')]
我试图将“a”的结果分成4组,而不是两组,即:

('1','2','3','4'),('5','6','7','8')....etc.
上述行两次用于单步浏览列表
a
a[::2]
告诉Python在
a
中获取其他每一项。下面是一个演示:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[::2]  # Every other item (every item counting by 2's)
[1, 3, 5, 7, 9]
>>>
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[1::2]  # Remember that Python indexes start at 0
[2, 4, 6, 8, 10]
>>>
a[1::2]
告诉Python从索引
1
开始获取
a
中的每一项。下面是一个演示:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[::2]  # Every other item (every item counting by 2's)
[1, 3, 5, 7, 9]
>>>
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[1::2]  # Remember that Python indexes start at 0
[2, 4, 6, 8, 10]
>>>
然后将
a[::2]
a[1::2]
返回的列表中的项目配对:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> zip(lst[::2], lst[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
>>>

要获取示例中的四项元组,可以使用以下方法:

>>> inputString = "[1,2,3,4,5,6,7,8,9,10,11,12]"
>>> a = inputString[1:-1].split(',')
>>> zip(*[iter(a)]*4)
[('1', '2', '3', '4'), ('5', '6', '7', '8'), ('9', '10', '11', '12')]
>>>

您可能还需要阅读:

如果需要4元组,则需要使用4个参数和4个步长

z = zip(a[::4], a[1::4], a[2::4], a[3::4])

请看这里的解释:你应该认真研究一下……以确保我理解正确。在数字列表中:[1,2,3,4,5,6,7,8,9,10],数字“1”被视为索引位置“0”?@snaprtrx-是。Python索引类似于C/C++索引:它们从索引
0
开始。您也可以使用列表理解和枚举来代替zip,例如:如果x%2!=0,则在枚举中打印[(x,y)表示x,y]