如何在Python中按元素内的分隔符将列表拆分为两个子列表
拆分带
/分隔符的Python列表元素为两个独立列表 嘿,这事儿好办!我给你分享几个实用的Python实现方式,都是日常处理这类字符串拆分需求常用的方法:
方法1:普通循环(直观易懂,适合新手)
这种写法逻辑最清晰,一步步拆分添加,容易理解和调试:
my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.'] my_list_1 = [] my_list_2 = [] for item in my_list: # 按/拆分每个元素,得到两个部分 part1, part2 = item.split('/') my_list_1.append(part1) my_list_2.append(part2) print(my_list_1) # 输出: ['owner', 'is', 'pleasant', 'and', 'entertaining', '.'] print(my_list_2) # 输出: ['NN', 'VBZ', 'JJ', 'CC', 'JJ', '.']
注意:如果你的列表里存在不包含
/的元素,split('/')会返回长度为1的列表,这时候解包成part1, part2会报错。不过根据你的示例数据,所有元素都符合格式,所以完全没问题。
方法2:zip+生成器表达式(简洁Pythonic写法)
想要一行搞定拆分?用这个方法准没错,非常符合Python的风格:
my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.'] # 用生成器表达式遍历拆分每个元素,再用zip聚合对应位置的部分 my_list_1, my_list_2 = zip(*(item.split('/') for item in my_list)) # zip返回的是元组,如果需要列表类型,转一下就行 my_list_1 = list(my_list_1) my_list_2 = list(my_list_2) print(my_list_1) print(my_list_2)
这里的*是解包操作,把生成器里的每个拆分结果(比如['owner', 'NN'])作为独立参数传给zip,zip会自动把所有第一个元素、第二个元素分别聚合成一组。
方法3:双列表推导式(快速实现)
如果不想写循环,也可以用两个列表推导式分别生成目标列表,代码同样简洁:
my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.'] my_list_1 = [item.split('/')[0] for item in my_list] my_list_2 = [item.split('/')[1] for item in my_list] print(my_list_1) print(my_list_2)
这种写法直接遍历每个元素,取拆分后的第0位和第1位元素组成新列表,一眼就能看懂逻辑。
内容的提问来源于stack exchange,提问作者bornTalented
相关产品推荐
相关产品推荐

