Python 找到非零组的最小值

Python 找到非零组的最小值

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

语法

下面的例子中使用了以下语法:

list()

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

groupby()

groupby()是Python中的内置方法,该方法接受参数,用于添加变量的名称以进行分组。

lambda

函数 lambda 提供了一种使用lambda关键字快速声明简短的匿名函数的方法。当使用def关键字表示时,lambda函数表现相同。

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来提供复杂迭代,这些过程找到最小的非零组。

示例

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()函数将元素添加到组中。

示例

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

使用列表推导式

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

示例

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()等方法。一些非零组的例子包括数据分析、信号处理、时间序列分析、数据清洗和预处理等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程