2011-04-22 73 views
1

兩個元素在Python列表我每個元件具有兩個項目,1日海峽,第二浮子在使用Python中

L= [('A', Decimal('52.00')), ('B', Decimal('87.80')), ('G', Decimal('32.50'))] 

我想用一個for loop中的元素既項循環

NewL= [] 
for row in L: 

    ### do something with str 
    InSql= "SELECT " % str 
    f= csr.execute(InSql) 
    ns = list(f) 

    ###do something with float 
    InSql= "SELECT " % float 
    f= csr.execute(InSql) 
    nf = list(f) 

    NewL.append(str, float,ns, nf) 
+1

你還沒有問了一個問題! ;-) – Achim 2011-04-22 17:08:08

+1

隱藏內置的名字是一個壞主意。選擇一個更具描述性的名字,實際上說這些字符串和數字代表了什麼。 – delnan 2011-04-22 17:08:44

+0

@delnan,我爲了清晰度Q. – Merlin 2011-04-22 17:30:10

回答

4

for循環更改爲這樣的事情:

for str_data, float_data in L: 
    # str_data is the string, float_data is the Decimal object 
+0

+1元組拆包是一個更好的解決方案:) – 2011-04-22 17:08:47

+0

是str_data,float_data按原始L排序?這個順序是否改變? – Merlin 2011-04-22 17:27:58

+2

訂單被保留下來,只要'L'中的每個元組的排列方式與您保證'str_data'將是字符串並且'float_data'將是'Decimal'一樣。 – 2011-04-22 17:30:54

2

兩種方式:

首先,你可以訪問成員行:

#For string: 
row[0] 
#For the number: 
row[1] 

或者你指定你的循環是這樣的:

for (my_string, my_number) in l: 
2

讀你的問題,我想你想要的是這樣的:

L= [('A', Decimal('52.00')), ('B', Decimal('87.80')), ('G', Decimal('32.50'))] 

for my_str, my_float in L: 
    print "this is my string:", my_str 
    print "this is my fload:", my_float 
2

元組解包與循環變量一起工作:

L= [('A', Decimal('52.00')), ('B', Decimal('87.80')), ('G', Decimal('32.50'))] 
for s, n in L: 
    print "string %s" % s 
    print "number %s" % n 

。OUPUTS:

string A 
number 52.00 
string B 
number 87.80 
string G 
number 32.50