Python新手求助:如何拆分嵌套列表中每个元素的第二个字符串
解决方法
你的需求其实很简单,核心就是保留每个子列表的第一个元素,把第二个元素按空格拆分后拼进去,还要注意把第一个元素转成小写(匹配你预期结果里的wowza)。
最简洁的写法(列表推导式)
直接用一行代码就能搞定:
mylist = [['Wowza', 'Here is a string'],['omg', 'yet another string']] new_list = [[sublist[0].lower()] + sublist[1].split() for sublist in mylist] print(new_list)
运行结果就是你想要的:
[['wowza', 'Here', 'is', 'a', 'string'], ['omg', 'yet', 'another', 'string']]
解释下:
sublist[0].lower():把每个子列表的第一个字符串转成小写sublist[1].split():把第二个字符串按空格拆分,默认会自动处理多个连续空格的情况,比split(' ')更实用+:把单个元素的列表(用[]包起来)和拆分后的列表合并成一个新子列表
适合新手理解的循环写法
如果觉得列表推导式有点绕,用普通循环一步步来更清晰:
mylist = [['Wowza', 'Here is a string'],['omg', 'yet another string']] new_list = [] for sublist in mylist: # 提取第一个元素并转小写 first_item = sublist[0].lower() # 拆分第二个元素 split_items = sublist[1].split() # 组合成新的子列表 new_sublist = [first_item] + split_items # 添加到新列表里 new_list.append(new_sublist) print(new_list)
说说你之前代码的问题
- 第一段代码:
- 循环里给
mylist.append(elem)会导致原列表不断变长,循环要么无限运行,要么重复处理元素 - 列表推导式只取了每个子列表的第二个元素拆分,完全没保留第一个元素,结果自然不符合预期
- 循环里给
- 第二段代码:
- 用
' '.join(elem)把第一个元素和第二个长字符串拼在一起再拆分,等于把第一个元素也当成了拆分后的一部分(逻辑错误,要是第一个元素本身带空格就会出问题) - 在循环里定义
Convert函数完全是多余操作,没必要把简单问题复杂化
- 用
内容的提问来源于stack exchange,提问作者SHW
相关产品推荐
相关产品推荐

