2015-02-23 82 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 
相關問題