Python ZIP函数提供意外输出

Ann*_*ine 1 python python-2.7

我正在努力获得工作的zip功能,Python 2.7以提供我需要的输出.

我拥有的数据示例:

print(score_data[0:3])
[['0/1:7,3:10:99', '0/0:3:3:99'], ['0/0:12:12:99', '0/1:11,7:18:99'], ['0/1:8,7:15:99', '0/1:14,4:18:99']]
Run Code Online (Sandbox Code Playgroud)

我想要的输出类型

[['0/1:7,3:10:99','0/1:8,7:15:99', '0/0:12:12:99'], [ '0/1:11,7:18:99','0/0:3:3:99', '0/1:14,4:18:99']]
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

print(zip(score_data[0:3]))
[(['0/1:7,3:10:99', '0/0:3:3:99'],), (['0/0:12:12:99', '0/1:11,7:18:99'],), (['0/1:8,7:15:99', '0/1:14,4:18:99'],)]
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 6

你错误地申请zip了一个清单.zip不抱怨,但它只是在你的列表中添加一个元组维度,没有多大用处:

>>> list (zip([1,2,3,4]))
[(1,), (2,), (3,), (4,)]
Run Code Online (Sandbox Code Playgroud)

您需要将子列表展开为位置参数(使用*运算符)以传递给zip:

z = [['0/1:7,3:10:99', '0/0:3:3:99'], ['0/0:12:12:99', '0/1:11,7:18:99'], ['0/1:8,7:15:99', '0/1:14,4:18:99']]

print(list(zip(*z)))   # convert to list for python 3 compat.
Run Code Online (Sandbox Code Playgroud)

结果:

[('0/1:7,3:10:99', '0/0:12:12:99', '0/1:8,7:15:99'), ('0/0:3:3:99', '0/1:11,7:18:99', '0/1:14,4:18:99')]
Run Code Online (Sandbox Code Playgroud)

请注意,zip默认情况下会发出元组.要list改为创建类型:

print([list(x) for x in zip(*z)])
Run Code Online (Sandbox Code Playgroud)

结果:

[['0/1:7,3:10:99', '0/0:12:12:99', '0/1:8,7:15:99'], ['0/0:3:3:99', '0/1:11,7:18:99', '0/1:14,4:18:99']]
Run Code Online (Sandbox Code Playgroud)