如何用Python将列表中的单个元素转为多个元素?

1 投票
3 回答
972 浏览
提问于 2025-04-15 22:28

我有一个元素列表,每个元素里面有四个用制表符分开的值:

['A\tB\tC\tD', 'Q\tW\tE\tR', etc.]

我想要创建一个更大的列表,把这些制表符去掉,让每个值都变成单独的元素:

['A', 'B', 'C', 'D', 'Q', 'W', 'E', 'R', etc.]

我该怎么在Python里做到这一点呢?我需要这个作业,今晚(格林威治标准时间午夜)之前交,但我完全不知道该怎么做。

3 个回答

0

这是一个作业问题吗?

t = ['A\tB\tC\tD', 'Q\tW\tE\tR']
sum((x.split('\t') for x in t),[])
0

这个应该可以正常运行:

t = ['A\tB\tC\tD', 'Q\tW\tE\tR']

t = reduce(lambda x, y: x + y, map(str.split,t))
5

一次性处理所有内容:

'\t'.join(['A\tB\tC\tD', 'Q\tW\tE\tR']).split('\t')

逐个处理:

[c for s in ['A\tB\tC\tD', 'Q\tW\tE\tR'] for c in s.split('\t')]

或者如果所有元素都是单个字母的话:

[c for s in ['A\tB\tC\tD', 'Q\tW\tE\tR'] for c in s[::2]]

如果可能会有带引号的制表符的话:

import csv
rows = csv.reader(['A\t"\t"\tB\tC\tD', 'Q\tW\tE\tR'], delimiter='\t')
[c for s in rows for c in s] # or list(itertools.chain.from_iterable(rows))

撰写回答