我被其他人给了一行我无法理解的代码。
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组而不是2组,即:
('1','2','3','4'),('5','6','7','8')....etc.
答案 0 :(得分:2)
z = zip(a[::2],a[1::2])
以上两行使用Explain Python's slice notation来逐步浏览列表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]
>>>
a[1::2]
告诉Python从a
开始,从索引1
开始获取所有其他项目。以下是演示:
>>> 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]
>>>
然后 zip
配对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')]
>>>
答案 1 :(得分:0)
如果你想要4元组,那么你需要使用4个参数和4步。
z = zip(a[::4], a[1::4], a[2::4], a[3::4])