如何实现OddEvenList函数将嵌套列表奇偶元素分组为嵌套列表?
嵌套列表奇偶元素分组问题
需要实现名为OddEvenList(nList)的函数,将预定义嵌套列表nList中的奇偶元素分别存入oddList和evenList两个嵌套列表。目前已能分离奇偶元素,但无法生成嵌套结构。
预期输入输出
预定义列表:
nList = [[2,5,99,99], [-3,8,1,2,10], [1, 7,100,10]]预期输出:
oddList = [[2], [8, 2, 10], [100, 10]] evenList = [[5, 99, 99], [-3, 1], [1, 7]]
当前代码及输出
我能分离奇偶元素,但不知道如何整理为嵌套结构,当前代码如下:
nList = [[2,5,99,99], [-3,8,1,2,10], [1, 7,100,10]] evi_lis = [] odd_lis = [] for i in nList: #[2,5,99,99] for m in i: #2 if (m%2==0): evi_lis.append(m) else: odd_lis.append(m) print(evi_lis) print(odd_lis)
当前输出:
[2, 8, 2, 10, 100, 10] [5, 99, 99, -3, 1, 1, 7]
解决方案
要生成嵌套结构,需在遍历每个子列表时,为奇偶列表分别创建对应的子列表,处理完当前子列表后再将该子列表加入总列表,而非直接将元素追加到一维列表中。修改后的实现代码如下:
def OddEvenList(nList): evenList = [] oddList = [] for sublist in nList: current_even = [] current_odd = [] for num in sublist: if num % 2 == 0: current_even.append(num) else: current_odd.append(num) evenList.append(current_even) oddList.append(current_odd) return oddList, evenList # 测试 nList = [[2,5,99,99], [-3,8,1,2,10], [1, 7,100,10]] oddList, evenList = OddEvenList(nList) print(f"oddList = {oddList}") print(f"evenList = {evenList}")
运行输出与预期一致:
oddList = [[2], [8, 2, 10], [100, 10]] evenList = [[5, 99, 99], [-3, 1], [1, 7]]
内容的提问来源于stack exchange,提问作者Richard Coterie
相关产品推荐
相关产品推荐

