Разделить список на две части на основе некоторого разделителя в каждом элементе списка в Python - PullRequest
0 голосов
/ 25 мая 2018

У меня есть список Python

my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.']

Я хочу разделить его на две части (на основе разделителя '/', представленного в каждом элементе списка), чтобы я мог получить два отдельных списка

my_list_1 = ['owner', 'is', 'pleasant', 'and', 'entertaining', '.']
my_list_2 = ['NN', 'VBZ', 'JJ', 'CC', 'JJ', '.']

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

Вот, пожалуйста:

my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.']
my_list_1 = []
my_list_2 = []
delim = '/'
for item in my_list:
    parts = item.split(delim)
    my_list_1.append(parts[0])
    my_list_2.append(parts[1])
0 голосов
/ 25 мая 2018
split_items = (i.split('/') for i in my_list)
my_list1, my_list2 = zip(*split_items)

Это создает 2 кортежа.Если вам действительно нужны списки, вы можете конвертировать их по

my_list1, my_list2 = map(list, (my_list1, my_list2))
0 голосов
/ 25 мая 2018

Используйте split, чтобы разделить на разделитель:

my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.']

lst1, lst2 = [], []
for x in my_list:
    part1, part2 = x.split('/')
    lst1.append(part1)
    lst2.append(part2)

Или используя списочные выражения:

lst1, lst2 = [x.split('/')[0] for x in my_list], [x.split('/')[1] for x in my_list]
0 голосов
/ 25 мая 2018

Вы можете использовать простой цикл for и split:

my_list = ['owner/NN', 'is/VBZ', 'pleasant/JJ', 'and/CC', 'entertaining/JJ', './.']

my_list1 = []
my_list2 = []
for el in my_list:
     my_list1.append(el.split("/")[0])
     my_list2.append(el.split("/")[1])


>>> my_list1
['owner', 'is', 'pleasant', 'and', 'entertaining', '.']
>>> my_list2
['NN', 'VBZ', 'JJ', 'CC', 'JJ', '.']
...