Python中不同大小列表的压缩


简介

在Python中,列表是存储数值或字符串值的常用方法之一。它们是可变的,并使用方括号[]定义。此类列表可以包含不同类型的元素,这些元素可以具有不同的数据类型。有时为了数据预处理的目的,我们可能需要压缩Python中的不同列表。

在本文中,我们将讨论列表的压缩操作,以及如何使用不同的方法和技术压缩Python中不同大小的列表。本文将帮助读者理解列表的压缩操作,并在需要时帮助读者执行相同的操作。

现在让我们开始讨论列表及其压缩操作。

列表的压缩

众所周知,列表是存储元素的常用方法,其中可以包含数值或字符串值。它们是可变类型,在使用Python处理数据集时经常使用。

列表的压缩操作意味着我们实际上正在压缩两个不同的列表,或者更简单地说,我们正在配对两个不同列表的值。

为了阐明其背后的思想,让我们举个例子。假设我们有两个列表

L1 = [1, 2, 3]

L2 = ['One', 'Two', 'Three']

如上所示,我们有两个不同的列表,一旦我们对它们执行压缩操作,输出将是

Zipped_List = [(1, 'One'), (2, 'Two'), (3, 'Three')]

现在让我们讨论在Python中压缩列表的用例。

压缩列表的应用

压缩大小相同或不同的两个不同列表可能在许多情况下有所帮助。让我们讨论一下这些情况

字典表示: 对两个不同列表的压缩操作可以帮助我们创建或表示列表为字典。我们可以通过使用一个带有键的列表和另一个带有字典值的列表来做到这一点。

数据处理: 在某些情况下,为了继续执行任务,必须进行数据处理,其中可能需要一个公共列表而不是许多不同的列表。压缩操作在这种情况下可能非常有用。

数据迭代: 当您想要迭代列表元素并想要对它们执行某些操作时,也可以使用压缩操作。

压缩列表

有很多方法可以用来压缩不同的列表,让我们讨论其中的一些。

方法1:使用带枚举的for循环

使用带枚举的for循环是压缩两个不同大小列表最简单的方法之一。(此处应补充代码示例)

# Using For Loop with Enumerate
#1. Define two lists 2. Run a for loop with enumerate 3. Zip the lists

# define the two lists
list1 = [1,2,3,4,5,6]
list2 = [1, 5, 6]

# print the original lists
print ("The input list 1 is : " + str(list1))
print ("The input list 2 is : " + str(list2))

# for i, j run a for loop with enumerate
# append the values with j
res = []
for i, j in enumerate(list1):
  res.append((j, list2[i % len(list2)]))

# print the zipped list
print ("The Zip List from List 1 and 2 is : " + str(res))

正如我们在上面的代码中看到的,我们输入了两个不同大小的列表list1和list2。

首先,我们打印原始列表,然后运行带有enumerate函数的for循环,该函数将附加列表元素并将两个列表压缩在一起。

输出

以下代码的输出将是(此处应补充输出示例)

The input list 1 is : [1, 2, 3, 4, 5, 6] 
The input list 2 is : [1, 5, 6] 
The Zip List from List 1 and 2 is : [(1, 1), (2, 5), (3, 6), (4, 1), (5, 5), (6, 6)]

方法2:使用zip()方法

使用zip()关键字也可以帮助我们压缩两个不同大小的列表。在这里,我们可以在循环中使用这个特定的关键字。(此处应补充代码示例)

# using Zip()

# define the list
num_list = [1, 2, 3, 4] # numerical list
str_list = ['one', 'two', 'three', 'four', 'none', 'none'] #string list

# zip the lists with using zip()

zipped_list = [(num, s) for num, s in zip(num_list, str_list)]
print(zipped_list)

正如我们在上面的代码中看到的,我们有两个不同大小的列表,我们使用zip()来附加列表元素并压缩列表。

输出

以下代码的输出将是(此处应补充输出示例)

[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]

方法3:使用itertools

这是压缩两个不同大小列表的经典方法之一。在这里,我们将使用itertools来压缩列表。(此处应补充代码示例)

# using the itertools 

# itertools + cycle

# import the cycle from itertools
from itertools import cycle

# define two different lists
list1 = [1,2,3,4,5,6,7]
list2 = [10, 50, 21]

# print the list1 and list2
print ("The input list 1 is : " + str(list1))
print ("The input list 2 is : " + str(list2))

# now use the cycle imported from itertools 
res = list(zip(list1, cycle(list2))
      if len(list1) > len(list2) #check for conditions
      else zip(cycle(list1), list2))

# printing the zipped list
print ("The Zip List from List 1 and 2 is: " + str(res))

正如我们在上面的代码中看到的,已经安装了itertools库,并且从其中导入了cycle。

然后我们定义了两个不同大小的列表并打印了它们。接下来,cycle用于通过将两个列表都传递给它来压缩列表。

输出

这段代码的输出将是(此处应补充输出示例)

The input list 1 is : [1, 2, 3, 4, 5, 6, 7] 
The input list 2 is : [10, 50, 21] 
The Zip List from List 1 and 2 is : [(1, 10), (2, 50), (3, 21), (4, 10), (5, 50), (6, 21), (7, 10)]

结论

在本文中,我们讨论了列表,什么是列表的压缩操作,它们的应用以及如何在Python中压缩两个不同大小的列表。

我们讨论了三种方法,可以使用这些方法来压缩Python中的列表,并且可以根据问题陈述和要求使用其中任何一种方法来压缩列表。本文将帮助读者理解列表的压缩操作,并在需要时帮助读者执行相同的操作。

更新于:2023年7月27日

422 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告