目前,我的清单是:

[[(881, 886), ('Twilight Sparkle', 'Rainbow Dash')],
 [(883, 885), ('Applejack', 'Rarity')],

[(887, 884), ('Princess Celestia', 'Pinkie Pie')],

 [(888, 882), ('Princess Luna', 'Fluttershy')]]


我希望它具有以下格式:

   [(pid1, pname1, pid2, pname2),

 (pid3, pname3, pid4, pname4),

(pid5, pname5, pid6, pname6),

(pid7, pname7, pid8, pname8)]


这样它就是玩家1,名称1,玩家2,名称2

最好在以前的zip函数中执行此操作,然后以其他方式压缩它,或者现在操作列表。

我想去做

temp = x[1]
x[1] = x[2]
x[2] = x[3]


但是我不确定该怎么做。

这是zip函数:

for i in range(0,length, 2):
    pairs =zip(list[i],list[i+1])


在压缩之前,它采用以下格式:

[(881, 'Twilight Sparkle'), (886, 'Rainbow Dash'),
 (883, 'Applejack'), (885, 'Rarity'),
(887, 'Princess Celestia'), (884, 'Pinkie Pie'),
 (888, 'Princess Luna'), (882, 'Fluttershy')]


有没有一种方法可以更改zip函数,以便将前两个列表放入列表中,然后将后两个列表放在列表中,依此类推,但保持id,name,id,name的顺序,而不是将id和name组合在一起?

我希望它采用以下格式:

[(881, 'Twilight Sparkle',886, 'Rainbow Dash'),
 (883, 'Applejack',885, 'Rarity'),
(887, 'Princess Celestia', 884, 'Pinkie Pie'),
 (888, 'Princess Luna', 882, 'Fluttershy')]

最佳答案

看起来您根本不想压缩,只想连接成对的元组:

players = [(881, 'Twilight Sparkle'), (886, 'Rainbow Dash'),
           (883, 'Applejack'), (885, 'Rarity'),
           (887, 'Princess Celestia'), (884, 'Pinkie Pie'),
           (888, 'Princess Luna'), (882, 'Fluttershy')]
pairs = [players[i] + players[i + 1] for i in range(0, len(players), 2)]
for pair in pairs:
    print(pair)


输出:

(881, 'Twilight Sparkle', 886, 'Rainbow Dash')
(883, 'Applejack', 885, 'Rarity')
(887, 'Princess Celestia', 884, 'Pinkie Pie')
(888, 'Princess Luna', 882, 'Fluttershy')

10-02 18:41