List 将列表拆分为新列表

List 将列表拆分为新列表,list,python-3.x,List,Python 3.x,因此,我有一个包含['a','a','R','O','N']的列表纯文本,我想以一组名为letter1,letter2,letter3的列表结束,这些列表包含['a'],['a'],['R'],等等。如何在不克隆列表五次并删除额外部分的情况下执行此操作?您可以在列表上迭代: In [1]: letters = ['A', 'A', 'R', 'O', 'N'] #use list comprehension to iterate over the list and place each ele

因此,我有一个包含
['a','a','R','O','N']
的列表
纯文本
,我想以一组名为
letter1
letter2
letter3
的列表结束,这些列表包含
['a']
['a']
['R']
,等等。如何在不克隆列表五次并删除额外部分的情况下执行此操作?

您可以在列表上迭代:

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']}
#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']
现在,您可以按如下方式访问每个列表:

In [5]: letters_dict['letters1']
Out[5]: ['A']
最后,为了完整起见,dictionary方法有一个很酷的扩展。也就是说,使用此中的代码,您可以执行以下操作:

In [4]: letters_dict
Out[4]:
{'letter1': ['A'],
 'letter2': ['A'],
 'letter3': ['R'],
 'letter4': ['O'],
 'letter5': ['N']}
#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']
这样,您可以执行以下操作:

In [4]: letters_dict
Out[4]:
{'letter1': ['A'],
 'letter2': ['A'],
 'letter3': ['R'],
 'letter4': ['O'],
 'letter5': ['N']}
#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个变量,上面的内容也会变得单调乏味。

您已经尝试过什么?所以我不会为你写代码。如果您尝试了某些操作,请编辑您的问题以包含代码。如果不是。。。好吧,去试试看!:P@SebastianLenartowicz所以可能没有,但有人做到了:我知道你不会为我写代码,我只是想知道是否有这样的函数。
[[e]为e在['A','A','R','O','N']]
这不是我想要的。我想知道如何将该代码在
明文中生成的每个子列表作为一个全新的列表,可以通过以下方式引用:
letter1 letter2
等等。也许类似的方式可以工作。我可以
letters1=letters\u dict['letters0']
吗?您想要
[[l]表示字母中的l]
,而不是
[列表(l)表示字母中的l]
;后者的工作原理与预期一致(因为长度1字符串是自身产生的可编辑字符串),但对于长度!=1字符串,通过使用
list
,您将得到多元素列表。然后确定。如果我碰巧使用了类似的东西,我会确保更改它。@Ohyah2389,我不太确定我是否理解您试图实现的目标,您是否真的建议为每个字母创建一个新变量并为该变量分配一个列表?我的意思是,无论如何,但对于后续任务来说,这通常是不切实际的。我需要将包含单个字母的项目的列表分开。然后,我需要以一种稍后可以阅读和解读的方式将这些字母拼凑起来。我是python的高手。