Python:在列表列表的子列表中加入字符

时间:2017-01-28 15:12:24

标签: python

我有一个庞大的列表列表,这是它的一部分:

[['cusA', 'zupT', 'rcnA', 'cusA', 'zupT', 'zupT']]

我在整个列表列表上执行了以下操作:

[list(x) for x in set(tuple(x) for x in my_list)]

因为我希望在子列表中有唯一的信息。这返回了以下内容:

[['c', 'u', 's', 'A'], ['r', 'c', 'n', 'A'], ['z', 'u', 'p', 'T']]

这是伟大的,因为它确实变得独一无二,但现在我需要它们来自它们的原始,而不是逐个字符地分解。

有没有办法在子列表中重新加入它们?

3 个答案:

答案 0 :(得分:1)

而不是list(x),请使用''.join(x)

但你可以把字符串本身放在一个集合而不是调用元组:list(set(my_list))

答案 1 :(得分:1)

正如您已经提到的:您可以join字符串:

print(''.join(['c', 'u', 's', 'A'])) # cusA

对于您的整个列表,您可以这样做:

lst = [['c', 'u', 's', 'A'], ['r', 'c', 'n', 'A'], ['z', 'u', 'p', 'T']]

str_lst = [''.join(item) for item in lst]
print(str_lst)  # ['cusA', 'rcnA', 'zupT']

请注意,创建单个字符列表没有意义;字符串本身的行为与字符列表完全相同(但是不可变的字符串);所以你可以直接做到这一点:

print(set(['cusA', 'zupT', 'rcnA', 'cusA', 'zupT', 'zupT']))
# {'zupT', 'cusA', 'rcnA'}
# if you need a list again instead of a set:
print(list(set(['cusA', 'zupT', 'rcnA', 'cusA', 'zupT', 'zupT'])))
# ['zupT', 'cusA', 'rcnA']

虽然不会保留订单......

答案 2 :(得分:1)

如果内部列表的内容顺序无关紧要,您可以将它们转换为一个集合,这是一个无序的唯一元素集合,然后将该集合转回一个列表:

result = [list(set(li)) for li in my_list]

打印:

[['cusA', 'rcnA', 'zupT']]