В цикле For с использованием двух элементов в Python

1

В списке python у меня есть два элемента для каждого элемента: 1-ая str, вторая - float

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
    Вы не задали вопрос! ;-)
  • 1
    Скрывать имена встроенных модулей - плохая идея. Выберите более описательное имя, которое на самом деле говорит о том, что представляют собой эти строки и числа.
Показать ещё 1 комментарий
Теги:
for-loop

4 ответа

4
Лучший ответ

Измените цикл for на что-то вроде этого:

for str_data, float_data in L:
    # str_data is the string, float_data is the Decimal object
  • 0
    +1 Распаковка кортежей - лучшее решение :)
  • 0
    Str_data, float_data упорядочены оригинальным L? Меняется ли этот порядок?
Показать ещё 1 комментарий
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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню