首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按条件拆分列表,对子列表应用函数,在Python中按原序合并

在Python中,按条件拆分列表并对子列表应用函数,然后按原序合并可以通过以下步骤实现:

  1. 定义一个函数,用于根据条件拆分列表。该函数需要接收两个参数:待拆分的列表和条件函数。条件函数用于判断列表中的元素是否满足条件,返回True或False。
  2. 在拆分函数内部,创建一个空列表用于存储拆分后的子列表。
  3. 使用循环遍历待拆分的列表,对每个元素应用条件函数进行判断。
  4. 如果条件函数返回True,则将该元素添加到当前子列表中。
  5. 如果条件函数返回False,同时当前子列表不为空,则将当前子列表添加到拆分后的子列表中,并创建一个新的空子列表作为当前子列表。
  6. 继续遍历列表中的下一个元素,重复步骤4和步骤5,直到遍历完整个列表。
  7. 如果最后一个子列表不为空,则将其添加到拆分后的子列表中。
  8. 定义一个函数,用于对拆分后的子列表应用函数。该函数需要接收两个参数:拆分后的子列表和应用函数。
  9. 在应用函数内部,创建一个空列表用于存储应用后的子列表。
  10. 使用循环遍历拆分后的子列表,对每个子列表应用函数。
  11. 将应用后的子列表添加到存储列表中。
  12. 返回存储列表作为结果。
  13. 最后,使用合并函数将按原序合并应用后的子列表。可以使用itertools.chain模块中的chain函数来实现合并。

以下是示例代码:

代码语言:txt
复制
import itertools

def split_list_by_condition(lst, condition_func):
    result = []
    sub_list = []

    for item in lst:
        if condition_func(item):
            sub_list.append(item)
        elif sub_list:
            result.append(sub_list)
            sub_list = []

    if sub_list:
        result.append(sub_list)

    return result

def apply_function_to_sublists(sublists, function):
    result = []

    for sublist in sublists:
        result.append(function(sublist))

    return result

def merge_sublists_in_original_order(sublists):
    return list(itertools.chain(*sublists))

# 示例用法
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 拆分列表,根据条件判断偶数和奇数
split_result = split_list_by_condition(lst, lambda x: x % 2 == 0)
print(split_result)
# 输出: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]

# 对拆分后的子列表应用平方函数
apply_result = apply_function_to_sublists(split_result, lambda x: [item**2 for item in x])
print(apply_result)
# 输出: [[1], [4], [9], [16], [25], [36], [49], [64], [81], [100]]

# 合并应用后的子列表
merge_result = merge_sublists_in_original_order(apply_result)
print(merge_result)
# 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这段代码实现了按条件拆分列表、对子列表应用函数,并按原序合并的功能。你可以根据实际需求进行修改和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

归并排序python实现

归并排序python实现 归并排序 归并排序在于把序列拆分合并起来,使用分治法来实现,这就意味这要构造递归算法 首先是一个例子 ? 先通过一半一半的拆分,然后: ?...然后再一步一步的向上合并合并的过程完成了排序,合并排序算法如下: def merge(s1,s2,s): """将两个列表是s1,s2顺序融合为一个列表s,s为列表""" #...,道理其实很简单,因为两个序列是排好的,所以都从左往右,互相比较选择较小的那个数放入最后的序列,s是序列,所以一开始会有与len(s)的比较 完整算法 算法通过递归并调用merge函数完成排序...def merge(s1,s2,s): """将两个列表是s1,s2顺序融合为一个列表s,s为列表""" # j和i就相当于两个指向的位置,i指s1,j指s2 i = j =...merge_sort(s): """归并排序""" n = len(s) # 剩一个或没有直接返回,不用排序 if n < 2: return # 拆分

56260

Python实现归并排序

直到其中一个列表的数据全部被添加完时,把另一个列表剩下的数据顺序添加到新列表。这就实现了将两个有序列表合并成一个新的有序列表的方法。 2....待排序列表是无序的,第一次拆分后无法保证两个子列表都是有序的,所以继续对子列表进行拆分。左边的子表有6个元素,继续拆分成两个有3个元素的子表。 3....函数,传入的两个列表(左表和右表)都是排好的(升序或降序,上面代码是升序)。...merge(left_array, right_array)函数对两个列表进行合并时,这两个列表必须都是有序的,而对待排序列表进行拆分时,无法保证两个子表一定是有序的,只有当被拆分的子表里只有一个元素时...时间复杂度 归并排序,不管待排序列表的初始状态如何,都不影响排序的时间复杂度。归并排序一直对待排序列表进行拆分,需要进行logn次拆分每一次递归合并,需要进行n次比较和添加。

1.2K40
  • Python算法揭秘:归并排序的魔力与实现技巧!

    Python算法揭秘:归并排序的魔力与实现技巧!...归并排序 归并排序是一种基于分治思想的排序算法,它将待排序的列表分割成较小的子列表,然后递归地对子列表进行排序,最后将排好的子列表合并以得到完整的有序列表。...算法步骤: 将待排序列表分割成长度相等(或相差最多1)的两个子列表。 递归地对两个子列表进行归并排序,直到子列表长度为1。 将排好的子列表合并,得到一个新的有序列表。...函数merge_sort接受一个列表arr作为输入,并通过递归地对子列表进行归并排序来对其进行排序。函数merge用于合并两个有序子列表。...,并通过合并排好的子列表来逐步构建有序列表的。

    17930

    python笔记:#013#高级变量类型

    ,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多 1.3 循环遍历 遍历 就是 从头到尾 依次 从 列表 获取数据 循环体内部 针对 每一个元素,执行相同的操作 Python...1.4 应用场景 尽管 Python列表 可以 存储不同类型的数据 但是开发,更多的应用场景是 列表 存储相同类型的数据 通过 迭代遍历,循环体内部,针对列表的每一项元素,执行相同的操作...元组 2.1 元组的定义 Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改 元组 表示多个元素组成的序列 元组 Python 开发,有特定的应用场景 用于存储 一串 信息,数据 之间使用...2.4 应用场景 尽管可以使用 for in 遍历 元组 但是开发,更多的应用场景是: 函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据 有关 函数的参数 和... Python 不仅支持 顺序索引,同时还支持 倒索引 所谓倒索引就是 从右向左 计算索引 最右边的索引值是 -1,依次递减 演练需求 截取从 2 ~ 5 位置 的字符串 截取从 2 ~

    1.4K30

    python笔记:#013#高级变量类型

    ,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多 1.3 循环遍历 遍历 就是 从头到尾 依次 从 列表 获取数据 循环体内部 针对 每一个元素,执行相同的操作 Python...1.4 应用场景 尽管 Python列表 可以 存储不同类型的数据 但是开发,更多的应用场景是 列表 存储相同类型的数据 通过 迭代遍历,循环体内部,针对列表的每一项元素,执行相同的操作...元组 2.1 元组的定义 Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改 元组 表示多个元素组成的序列 元组 Python 开发,有特定的应用场景 用于存储 一串 信息,数据...2.4 应用场景 尽管可以使用 for in 遍历 元组 但是开发,更多的应用场景是: 函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据 有关 函数的参数... Python 不仅支持 顺序索引,同时还支持 倒索引 所谓倒索引就是 从右向左 计算索引 最右边的索引值是 -1,依次递减 演练需求 截取从 2 ~ 5 位置 的字符串 截取从 2

    1.3K90

    字符串反转的实现方法总结「建议收藏」

    文章目录 方法1:对称交换法 方法2:函数递归法 方法3:列表反转法 方法4:循环反向迭代法 方法5:倒切片法 方法6:遍历索引法 方法7:反向遍历索引法 方法8:列表弹出法 方法9:反向循环迭代法...('反转前的字符串:', str) # abcdef print('反转后的字符串:', newStr) # fedcba 说明: Python列表可以进行反转,我们只要把字符串转换成列表...每弹出一个元素就加入到空字符串 newStr,最终实现字符串的反转。...的reduce()函数。...先创建一个字符串倒相加函数,然后将字符串和新创建的函数一起传入reduce()函数,进行字符串倒累积相加,最后实现反转字符串。

    92330

    使用Python另一个列表对子列表进行分组

    Python ,我们可以使用各种方法另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。...分析大型数据集和数据分类时,另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。本文中,我们将探讨 Python 另一个列表对子列表进行分组的不同方法,并了解它们的实现。...方法1:使用字典 字典可以以非常简单的方式用于 Python 的另一个列表对子列表进行分组。让我们借助示例了解字典另一个列表另一个列表分组子列表的用法。...也可以表达式末尾添加任何 if 条件以过滤掉某些元素。 例 在下面的示例,我们定义了函数 group_sublists,它将子列表和grouping_list作为参数。...,我们讨论了如何在 Python 另一个列表对子列表进行分组。

    40020

    Pandas 25 式

    操控缺失值 把字符串分割为多列 把 Series 里的列表转换为 DataFrame 用多个函数聚合 用一个 DataFrame 合并聚合的输出结果 选择行与列 重塑多重索引 Series 创建透视表...这个数据集国家列出了酒水平均消耗量,如果想反转列该怎么办? 最直接的方式是把 ::-1 传递给 loc 访问器,与 Python 里反转列表的切片法一样。 ?...glob 返回的是无序文件名,要用 Python 内置的 sorted() 函数排序列表。...这里要让 concat() 函数合并,axis='columns。 ? 现在 drinks 有 6 列啦! 11....不过,用 isin() 方法筛选会更清晰,只要传递电影类型的列表就可以了。 ? 如果想反选,可在条件前添加一个波浪符(tilde ~)。 ? 14.

    8.4K00

    数据分析篇 | PyCon 大咖亲传 pandas 25 式,长文建议收藏

    操控缺失值 把字符串分割为多列 把 Series 里的列表转换为 DataFrame 用多个函数聚合 用一个 DataFrame 合并聚合的输出结果 选择行与列 重塑多重索引 Series 创建透视表...这个数据集国家列出了酒水平均消耗量,如果想反转列该怎么办? 最直接的方式是把 ::-1 传递给 loc 访问器,与 Python 里反转列表的切片法一样。 ?...glob 返回的是无序文件名,要用 Python 内置的 sorted() 函数排序列表。...这里要让 concat() 函数合并,axis='columns。 ? 现在 drinks 有 6 列啦! 11....不过,用 isin() 方法筛选会更清晰,只要传递电影类型的列表就可以了。 ? 如果想反选,可在条件前添加一个波浪符(tilde ~)。 ? 14.

    7.1K20

    算法原理:大数据处理的分治思想!

    分治是一种被广泛应用的有效方法,它的基本思想是把最初的问题分解成若干子问题,然后,逐个解决各个子问题的基础上得到原始问题的解。所谓分治就是“分而治之”的意思。...应用与实例 分治算法的应用主要可分为以下五种: 1)二分搜索算法 问题:要求一个n元已排序的数组A[n],搜索一个特定元素x。 2)合并排序算法 问题:将一个n元数组A排序。...准备数据,将大问题切分为小问题   递归地将数组二分为左区间与右区间,直到最终的数组只剩下一个元素,将其返回 处理子问题得到子结果,并合并 长度为 1 的子数组唯一的数显然是众数,直接返回即可。...准备数据,将大问题切分为小问题   递归地将数组二分为左区间与右区间,直到最终的数组只剩下一个元素,将其返回 处理子问题得到子结果,并合并 将数组切分为左右区间 对与左区间:从右到左计算左边的最大子和...对与右区间:从左到右计算右边的最大子和 由于左右区间计算累加和的方向不一致,因此,左右区间直接合并相加之后就是整个区间的和 最终返回左区间的元素、右区间的元素、以及整个区间(相对子问题)和的最大值

    1.7K10

    PQ里的列表排序函数超级好用!

    昨天,文章《将内容字符出现次数排列?这个Excel里的难题因为PQ而轻松解决!》...,通过多个步骤的操作,实现了相应的排序效果,但是,原文中的操作方法也存在一个bug: 即在有相同内容的情况下,最后通过对内容的分组合并,会导致多个内容合并到一起,因此,应改为索引分组合并...(Text.Replace)后的长度(Text.Length)进行排序(List.Sort) 3、将排好的内容合并(Text.Combine) 其中比较关键的地方在于第2点,List.Sort...函数,可以根据自定义函数进行排序,而不限定于根据列表的内容本身进行排序——类似于Power Pivot列(参照)排序。...更具体一点儿,如数字内容“11124533”,拆分并去重后得到的列表为“1,2,4,5,3”,对于这个列表的每一个字符: 比如1,整个数字内容通过替换剔除后,将得到结果24533,即剔除了其中的3

    1.8K30

    python之字符串的基本使用

    参考链接: Python的casefold()字符串 字符串的基本使用  1、字符串的定义  字符串 就是 一串字符,是编程语言中表示文本的数据类型 Python 可以使用 一对双引号 " 或者... Python 不仅支持 顺序索引,同时还支持 倒索引所谓倒索引就是 从右向左 计算索引    最右边的索引值是 -1,依次递减   演练需求    截取从 2 ~ 5 位置 的字符串    ...字符串的逆序(面试题) print(num_str[::-1]) 10、公共方法  Python 内置函数  Python 包含了以下内置函数:  函数描述备注len(item)计算容器中元素个数del..., 3, 4]合并字符串、列表、元组*[“Hi!”]...  迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典需求:要判断 某一个字典 是否存在 指定的 值    如果 存在,提示并且退出循环如果 不存在, 循环整体结束 后,希望 得到一个统一的提示

    70950

    基本算法之-递归

    一、递归定义 如果函数包含了对其自身的调用,该函数就是递归的; 递归(Recursion),在数学与计算机科学,是指在函数的定义中使用函数自身的方法; 基本要素 基线条件:确定递归到何时终止,函数不再调用自己...如果匹配,则进行处理并返回值; 使用更小的或更简单的子问题(或多个子问题)来重新定义答案; 对子问题运行算法; 将结果合并入答案的表达式; 返回结果。...五、递归应用 递归算法一般用于解决三类问题 数据的定义是递归定义的,比如:Fibonacci函数、阶乘等; 问题的解法是递归算法实现的,比如:回溯法; 数据的结构形式是递归定义的,比如:树的遍历、...七、尾递归优化 计算机函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。...return fact_iter(n-1, n * product) 返回的仅仅是函数本身,n - 1 和 n * product 函数调用前就会被计算出来,不影响函数调用; 优化的实质,就是将原本倒的计算

    92830

    20个值得学习的 Python 技巧

    译文不通顺的地方,Python开发者 已做修改优化。) 1 字符串反转 使用切片反转字符串。...x=1 y=2 x,y=y,x print(x) # 2 print(y) # 1 7 将字符串拆分为子字符串列表 我们使用字符串类的.split()方法将字符串拆分为子字符串列表,还可以将要分割的分隔符作为参数传递...Python 计数器跟踪容器每个元素的频数, Counter()返回一个字典,元素作为键,频数作为值。 另外使用 most_common()函数来获取列表的 出现次数最多的元素。...import sys num=21 print(sys.getsizeof(num)) 15 合并两个字典 Python 2 ,使用 update()合并两个字典,Python 3 变得更加简单。...下面脚本,两个字典被合并相交的情况下,使用第二个字典的值。

    70310

    面试官让用 5 种 python 方法实现字符串反转 ?对不起我有16种……

    关键词:Python字符串翻转;面试题 最近身边有个朋友,因为经受不住年薪30W+的诱惑,立志转行成为一名程序员。自学编程一个月以后,假装自己是学生哥,信心满满地和应届毕业生一起参加了校招。...方法一:反转列表法 a = 'abcdef' b = list(a) b.reverse() b = ''.join(b) print(b) Python列表可以进行反转,我们只要把字符串转换成列表...的reduce()函数。...先创建一个字符串倒相加函数和字符串,一起传入reduce函数,运行,就可以进行字符串倒累积相加,最后反转字符串。...)方法,倒排列,不过,这一方法有个弊端,它并不是字符串的顺序进行升序或降序排列,而是英语26个字母进行排序,所以,如果字符串不是从小到大排列,那么运行后,排序会是错误的。

    1.4K10

    算法导论:分治法,python实现合并排序MERGE-SORT

    参考链接: Python合并排序merge sort 1....合并排序元素个数为2的幂数的列表 思想:将原始列表的元素,拆分为个数为2的子列表,将每个子列表进行合并排序,加以整合变为左右两部分都排好的元素个数为4的子列表..........L0 = B0[0: int((len(B0)) / 2)]     R0 = B0[int((len(B0)) / 2): len(B0)]  # 定义拆分函数,把列表分为左右两个子列表     return...MERGE_SORT(B1)         # 调用合并排序函数,得到最终结果 print(B1)存在的问题,拆分和整合部分由于自己目前能力不足,手动写了一下。...用Python实现任意排列数组的合并排序 """Python实现合并排序""" def MERGE(A, p, q, r):     """定义合并函数"""     n1 = q - p     n2

    54600

    35. R 数据整理(七:使用tidyr和dplyr处理数据框 2.0)

    ,后续的参数是条件,这些条件是需要同时满足的,另外,条件取 缺失值的观测自动放弃,这一点与直接在数据框的行下标中用逻辑下标有所不同,逻辑下标中有缺失值会在结果 产生缺失值。...,再转换回长列表,比如: 这个数据的问题是 x, y 应该放在两列合并成一个了,2018 和 2019 应该放在一列却分成了两列。...2.10 表格的拆分合并 将同一列的内容分为两列内容。或将两列内容合并为同一列内容。 首先还是可以创建一个数据框。...2.11 处理关系数据 参见:的join 函数介绍部分 2.12 数据框的列拆分合并 参见:34....nest 与unnest 对于数据框,我们可以使用split 将数据框某列拆分为多个数据框,并储存在列表

    10.8K30

    一次性学懂Excel的Power Query和Power Pivot使用

    添加自定义列 3.4 拆分列与合并列操作 3.4.1 实例1:分隔符拆分列 3.4.2 实例2:字符数拆分列 3.4.3 实例3:位置拆分列 3.4.4 实例4:其他拆分列的方法 3.4.5 合并列常用的方法...5.3.3 获取和删除列表的元素 5.4 各种数据结构的拆分合并、截取和替换实战 5.4.1 实例1:表的拆分合并应用 5.4.2 实例2:列表拆分合并应用 5.4.3 实例3:拆分和提取文本值的数值并求和...5.4.4 对文本值进行截取的函数 5.4.5 实例4:批量替换和有条件地批量替换文本值 5.4.6 实例5:使用List.Zip函数批量更换标题及制作工资条 5.5 判断文本值和列表是否包含指定的内容...实例:条件分组计算和数据清洗整理获奖数据 5.7 参数与自定义函数 5.7.1 参数的设置方法 5.7.2 实例:创建和调用自定义函数将一列拆分为多列 第6章  Power Query综合实战 6.1...1:在数据透视表中使用自定义排序:列排序 9.1.2 实例2:在数据透视表创建KPI规则——设置“条件格式” 9.2 DAX中使用VAR变量 9.2.1 关于VAR变量 9.2.2 使用变量时应该避免的错误

    9K20
    领券