使用Python查找非零分组的最小值


在Python中,分组是由基于特定条件或操作具有相同特征的元素的集合或集合定义的。分组可以用列表、集合或其他数据结构表示。在这个问题陈述中,非零分组指的是列表的子集,其中所有元素都非零,并且彼此相邻,中间没有任何零值。在Python中,我们将使用一些内置函数,如list()、groupby()、lambda等来解决非零分组的最小值问题。

语法

以下语法在示例中使用

list()

list()是Python中一个内置方法,可以用于将多个元素放在单个变量中。

groupby()

groupby()是Python中的一个内置方法,它传递参数来添加要分组的变量的名称。

lambda

lambda函数提供了一种使用lambda关键字声明简短匿名函数的快捷方式。lambda函数的行为与使用def关键字表达时相同。

range()

range()是Python中的一个内置函数,它返回给定范围内的元素序列。默认情况下,初始范围总是从0开始,并通过指定特定范围结束。

len()

len()是Python中的一个内置函数,它返回对象的长度。

min()

min()是Python中的一个内置函数,它返回非零分组中的最小元素。

append()

append()是Python中一个内置方法,它在列表的末尾添加元素。

join()

join()是Python中一个内置方法,它使用分隔符字符串接受可迭代元素。

map()

在Python中,map()函数允许我们处理列表中的所有元素,并通过转换它来迭代所有元素,而无需使用显式的for循环。

split()

split()是Python中的一个内置函数,它将字符串分割成字符串列表。

使用itertools

在下面的示例中,程序使用Python itertools模块,该模块通过使用内置函数groupby()和lambda来帮助提供复杂的迭代,这些过程查找最小非零分组。

示例

Open Compiler
import itertools def minimum_nonzero(lst): non_zero_groups = [list(group) for key, group in itertools.groupby(lst, key=lambda x: x != 0) if key] min_values = [min(group) for group in non_zero_groups] return non_zero_groups, min_values # Create the non-group of list element lst = [2, 9, 0, 0, 0, 3, 1, 0, 0, 5, 0, 0, 9, 0] # Calling function sets to two variables groups, min_values = minimum_nonzero(lst) for i in range(len(groups)): print(f"Group: {groups[i]}, Minimum Value: {min_values[i]}")

输出

Group: [2, 9], Minimum Value: 2
Group: [3, 1], Minimum Value: 1
Group: [5], Minimum Value: 5
Group: [9], Minimum Value: 9

使用min()和append()函数

在下面的示例中,程序使用内置函数min()来查找非零分组中最小的数字,而append()函数将元素添加到分组中。

示例

Open Compiler
def min_group_nonzero(lst): def min_group(lst): group = [] for num in lst: if num == 0: if group: yield group, min(group) group = [] else: group.append(num) if group: yield group, min(group) return list(min_group(lst)) # Create the list for non-zero group lst = [1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0, 23, 44, 0, 2] # Calling function result = min_group_nonzero(lst) # Print the group element and minimum value from non-zero group for group, min_value in result: print(f"Group: {group}, Minimum Value: {min_value}")

输出

Group: [1, 2, 3], Minimum Value: 1
Group: [4, 5], Minimum Value: 4
Group: [23, 44], Minimum Value: 23
Group: [2], Minimum Value: 2

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

使用列表推导式

在下面的示例中,程序使用列表推导式,其中一些内置函数,如join()、split()和min()将用于查找最小非零分组。

示例

Open Compiler
def min_nonzero_groups_2(lst): non_zero_groups = [list(group) for group in ''.join(map(str, lst)).split('0') if group] min_values = [min(group) for group in non_zero_groups] return non_zero_groups, min_values # Create the non-zero list lst = [0, 0, 0, 1, 2, 9, 0, 0, 5, 2, 3] groups, min_values = min_nonzero_groups_2(lst) # Print the group along with minimum value for i in range(len(groups)): print(f"Group Element: {groups[i]}, Minimum Value: {min_values[i]}")

输出

Group Element: ['1', '2', '9'], Minimum Value: 1
Group Element: ['5', '2', '3'], Minimum Value: 2

结论

最小非零分组是从分组元素中查找最小值的特定任务。我们使用了列表推导式、itertools模块、min()和append()等方法来解决问题陈述。一些非零分组的例子包括:数据分析、信号处理、时间序列分析、数据清洗和预处理等。

更新于:2023年8月14日

961 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告