2014-08-28 38 views
0

語言:Python 我的問題如下:Python:如何在每個列表元素的末尾添加後綴?

我有兩個不等長的列表。第一個列表包含一個縱向研究的變量名稱,另一個包含這些變量的後綴。用戶提供一個csv,從中讀取變量名稱,然後提示輸入這些變量的(n)個迭代次數以及n個後綴的名稱

這裏是一個假示例我的意思是

迭代次數:2

Suffix1:預

Suffix2:6個月

表1: ['mood1', 'mood2', 'mood3', 'dep1', 'dep2', 'dep3']

表2: ['pre', '6month']

期望串聯:

['mood1_pre', 'mood2_pre', 'mood3_pre', 'dep1_pre', 'dep2_pre', 'dep3_pre', 'mood1_6month', ..., 'dep3_6month']

我的程序完全正常,除了輸出分割拼接列表中的每個字母變成自己的元素,例如:

How many iterations of the variables do you need?: 3 
Variable Suffix 1: pre 
Variable Suffix 2: 6m 
Variable Suffix 3: 12m 
['B', 'o', 'b', '_', 'p', 'r', 'e', 'J', 'o', 'e', '_', 'p', 'r', 'e', 'J', 'i', 
'm', '_', 'p', 'r', 'e', 'A', '_', 'p', 'r', 'e', 'B', '_', 'p', 'r', 'e', 'C', 
'_', 'p', 'r', 'e', '1', '_', 'p', 'r', 'e', '2', '_', 'p', 'r', 'e', '3', '_', 
'p', 'r', 'e', '1', '4', '_', 'p', 'r', 'e', 'B', 'o', 'b', '_', '6', 'm', 'J', 
'o', 'e', '_', '6', 'm', 'J', 'i', 'm', '_', '6', 'm', 'A', '_', '6', 'm', 'B', 
'_', '6', 'm', 'C', '_', '6', 'm', '1', '_', '6', 'm', '2', '_', '6', 'm', '3', 
'_', '6', 'm', '1', '4', '_', '6', 'm', 'B', 'o', 'b', '_', '1', '2', 'm', 'J', 
'o', 'e', '_', '1', '2', 'm', 'J', 'i', 'm', '_', '1', '2', 'm', 'A', '_', '1', 
'2', 'm', 'B', '_', '1', '2', 'm', 'C', '_', '1', '2', 'm', '1', '_', '1', '2', 
'm', '2', '_', '1', '2', 'm', '3', '_', '1', '2', 'm', '1', '4', '_', '1', '2', 
'm'] 

我正在使用它來創建新列表 newvarlist.extend((varlist[vars] + '_' + varsuffix[j]))

+0

你真的能顯示你的代碼嗎?任何人都很難在沒有看到的情況下給你提供建議。 – Blckknght 2014-08-28 18:44:19

+0

您可能正在迭代列表中的字符串。雖然沒有代碼很難評論你的方法。 – shaktimaan 2014-08-28 18:45:03

回答

11

下面是一個使用list comprehension做到這一點的一種方法:

['{}_{}'.format(a, b) for b in b_list for a in a_list] 

演示:

>>> a_list = ['mood1', 'mood2', 'mood3', 'dep1', 'dep2', 'dep3'] 
>>> b_list = ['pre', '6month'] 
>>> result = ['{}_{}'.format(a, b) for b in b_list for a in a_list] 
>>> result 
['mood1_pre', 'mood2_pre', 'mood3_pre', 'dep1_pre', 'dep2_pre', 'dep3_pre', 'mood1_6month', 'mood2_6month', 'mood3_6month', 'dep1_6month', 'dep2_6month', 'dep3_6month'] 
0

如果你在最後名單的排序靈活:

from itertools import product, imap 
l1 = ['mood1', 'mood2', 'mood3', 'dep1', 'dep2', 'dep3'] 
l2 = ['pre', '6month'] 
x = list(imap('_'.join, product(l1, l2))) 

這產生了['mood1_pre', 'mood1_6month', ...]而不是['mood1_pre', 'mood2_pre', ...]

相關問題