简单语法题(元组转换)

Simple Syntax Question (tuple conversion)

我目前正在研究为不同目的组合、组织和操作数据的不同方法。

就在今天,我发现了这种 zip() / iter() 技术,它可以创建包含 TUPLES 的 LIST,同时还能够指定每个 TUPLE 中有多少个元素。但是,我无法完全理解部分语法。

代码如下:

mylist = [1,2,3,4,5,6]

converted = [x for x in zip(*[iter(mylist)]*2)]

print(converted)

这是输出(这是我想要的):

[(1, 2), (3, 4), (5, 6)]

我想抓住的是第一个星号。我知道这很可能与告诉 'iter' 或 'zip' 函数每个元组应包含多少个元素的 '*2' 有关,但是,我试图掌握它放置的必要性。

非常感谢任何帮助。

此外,如果您知道另一种实现此目的的技术并愿意分享,我将非常感谢向您学习。

再次感谢大家!

基本上 iter(mylist) 为列表创建一个迭代器对象,然后将其放入列表 [iter(mylist)] 中,乘以 2 基本上形成一个包含对同一迭代器对象的两个引用的列表:[iter(mylist)]*2 -> [<list_iterator object at 0x7f8fbc1ac610>, <list_iterator object at 0x7f8fbc1ac610>]

第一个星号将列表作为参数解压到 zip() 函数中。 由于我不太擅长解释事情,所以为了更容易理解,这段代码和你的一样:

mylist = [1,2,3,4,5,6]

iterators = [iter(mylist)] * 2
converted = [x for x in zip(*iterators)]

print(converted)

所以它创建了一个迭代器,然后通过将它乘以 2 来创建一个包含对同一迭代器对象的两个引用的列表。 然后它解压缩列表以用作 zip() 函数

的参数

我不太擅长解释,希望这至少能让你明白一点。