Python List content stripping

Question:

So, I have a list having string such as

matches=['A vs B','C vs D','E vs F','G vs H']

I want to get strip the list contents in such a way that I get two more lists of

t1=[A,C,E,G]
t2=[B,D,F,H]

I’ve tried strip function as

t1=[i.strip("vs")[0] for i in matches]
t2=[i.strip("vs")[-1] for i in matches]

But I’m not getting the desirable results. Can someone guide me trough it. Thanks

Asked By: Aditya

||

Answers:

Iterate over the matches list. Split each element on whitespace. Populate your lists.

matches=['A vs B','C vs D','E vs F','G vs H']

t1 = []
t2 = []

for match in matches:
    a, _, b = match.split()
    t1.append(a)
    t2.append(b)

print(t1)
print(t2)

Output:

['A', 'C', 'E', 'G']
['B', 'D', 'F', 'H']
Answered By: Pingu

I would use :

t1, t2 = map(list, zip(*[m.split(" vs ") for m in matches]))

And since you have a tag, here is any approach with split and the Series constructor :

t1, t2 = (
            pd.Series(matches)
                .str.split(" vs ", expand=True)
                .values
                .T.tolist()
          )

Output :

print(t1)
#['A', 'C', 'E', 'G']
print(t2)
#['B', 'D', 'F', 'H']
Answered By: Timeless
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.