如何用Python将列表中的单个元素转为多个元素?
我有一个元素列表,每个元素里面有四个用制表符分开的值:
['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))