将列表拆分为新列表

时间:2016-08-26 00:44:35

标签: list python-3.x

所以我有一个包含plaintext的列表['A', 'A', 'R', 'O', 'N'],我希望最终得到一组名为letter1letter2letter3的列表,依此类推,其中包含['A']['A']['R']等。如何在不清除列表五次并删除额外部分的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以遍历列表:

In [1]: letters = ['A', 'A', 'R', 'O', 'N']

#use list comprehension to iterate over the list and place each element into a list
In [2]: [[l] for l in letters]
Out[2]: [['A'], ['A'], ['R'], ['O'], ['N']]

要添加标题,我们通常使用字典。例如

#create a dictionary
letters_dict = {}

#iterate over original list as above except now saving to a dictionary
for i in range(len(letters)):
    letters_dict['letter'+str(i+1)] = [letters[i]]

这为您提供以下内容:

In [4]: letters_dict
Out[4]:
{'letter1': ['A'],
 'letter2': ['A'],
 'letter3': ['R'],
 'letter4': ['O'],
 'letter5': ['N']}

您现在可以按如下方式访问每个列表:

In [5]: letters_dict['letters1']
Out[5]: ['A']

最后,为了完整起见,这是字典方法的一个很酷的扩展。即,使用此thread中的代码,您可以执行以下操作:

#create a class
class atdict(dict):
    __getattr__= dict.__getitem__
    __setattr__= dict.__setitem__
    __delattr__= dict.__delitem__ 

#create an instance of the class using our dictionary:
l = atdict(letters_dict)

这样,您可以执行以下操作:

In [11]: l.letter1
Out[11]: ['A']

In [12]: l.letter5
Out[12]: ['N']

如果你不想按照你在问题中的建议将值存储在可迭代或可引用的对象(即字典,列表,类)中,那么你可以按字面意思执行以下操作:

letter1 = letters[0]
letter2 = letters[1]
letter3 = letters[2]
#and so forth ...

但正如您所看到的,即使有6个变量,上述内容也变得乏味。