2015-02-23 45 views
1

我有以下字符串: 列表= [[1],[ '苹果',2],[3],[4],[5],[6],[7]]如何从Python中的字符串中提取子列表?

如何能我提取的子列表如下: s1 = [1] s2 = ['apple',2] ... s7 = [7] ?

谢谢你的帮助。

+0

嗨。你说“列表到字符串”。你真的想让变量s1 ... s7具有字符串值吗?另外,你是否需要实际的变量?你有多个不同大小的列表,或者只有一个列表? – markw 2015-02-23 04:14:42

+0

我很抱歉,我必须纠正我的问题。原始列表(这里是List)是一个字符串,所以s1 = List [0]给了我'['。其实我想将这个字符串转换为7个列表。 – 2015-02-23 04:28:26

+0

查看我的答案更新。 – merlin2011 2015-02-23 04:33:39

回答

3

如果要创建7个变量s1s7,最直接的方法是直接分配。

s1 = List[0] 
S2 = List[1] 
... 
S7 = List[6] 

第二种方法是将所有赋值放在一行上并让python解开列表,如@Lafada所述。

第三种方法是使用exec,这对更大数量的变量可能更具可扩展性,尽管所有这些独立名称的值而不是原始列表对我而言并不清楚。

L = [[1], ['apple', 2], [3], [4], [5], [6], [7]] 

for i in xrange(7): 
    exec("s%d = L[%d]" % ((i+1), i)) 

更新:基于OP的评论,他开始用字符串。在我们首先使用ast.literal_eval将字符串转换为列表之后,可以使用每种方法。

import ast 

List = "[[1], ['apple', 2], [3], [4], [5], [6], [7]]" 
L = ast.literal_eval(List) 
+0

我很抱歉,我必须纠正我的问题。原始列表(这里是List)是一个字符串,所以s1 = List [0]给了我'['。其实我想将这个字符串转换为7个列表。 – 2015-02-23 04:27:43

+0

@PouyaKh请[edit]你的问题来澄清你想要的 – MattDMo 2015-02-23 04:28:32

4

你必须使用拆包

>>> L = [[1], ['apple', 2], [3], [4], [5], [6], [7]] 
>>> s1, s2, s3, s4, s5, s6, s7 = L 
>>> s1 
[1] 
>>> s2 
['apple', 2] 
>>> s7 
[7] 
+0

我很抱歉,我必须改正我的问题。原始列表(这里是List)是一个字符串,所以s1 = List [0]给了我'['。其实我想将这个字符串转换为7个列表。 – 2015-02-23 04:30:38

+0

尼斯和pythonic +1 – 2015-02-23 04:32:16

+0

@PouyaKh,你会编辑你的答案与你的清单范例吗? – Nilesh 2015-02-23 04:33:15

2

只要你可以尝试以下。

s = [] 
s[:7] = List 
1

试试这个代码

List=[[1], ['apple', 2], [3], [4], [5], [6], [7]] 

output="" 
for list_index in range(len(List)): 
    output+="s%s = %s "%(list_index,List[list_index]) 


print output 
相关问题