将列表转换为元组的分组列表?

use*_*683 2 python

我有这个清单:

['Ben\n', '5 0 0 5 -5 \n', 'Moose\n', '5 5 0 3 0 0 \n', ...]
Run Code Online (Sandbox Code Playgroud)

这种情况持续了很长时间.我需要将此列表放入这样的元组列表中:

[('Ben', '5 0 0 5 -5'), ('Moose', '5 5 0 3 0 0'), ...] and so on.
Run Code Online (Sandbox Code Playgroud)

我觉得这应该很容易.
我已经打开了文本文件,然后通过这种方式将其拆分为一个列表:

e = open("bookratings.txt", "r")
elines = e.readlines()
Run Code Online (Sandbox Code Playgroud)

但我不知道从哪里开始?

thk*_*ang 5

看起来每个人在下一行都有相关数据,因此每人产生两行数据.你可以zip.

lst = list(zip(*[iter(lst)]*2))
Run Code Online (Sandbox Code Playgroud)

  • @StevenRumbalski` [iter(lst)]*2`创建一个双元素列表,其中一个迭代器作为两个元素.因为它完全相同,相同的迭代器,消耗第一个列表项上的项目也会消耗第二个列表项上的项目.因此,当运行`zip`来配对来自两个(或更多)迭代器的元素时,它将继续从迭代器中消耗两个项目(每个列表项一次)并将它们分组.里面的`*list`会把列表变成`zip`函数的单独参数; 一切顺利. (2认同)
  • @MartijnPieters:对.但是我们谈论的是一个OP,它不使用`with`打开文件,并且在文件上反复使用`readlines`.所以我认为需要一点解释. (2认同)