2016-01-16 2 views
1

Я хотел бы, чтобы преобразовать список как:Преобразование списка в последовательность строки троек

["Red", "Green", "Blue"] 

в последовательность кортежей струнных троек:

[("RED", "Red", ""), ("GREEN", "Green", ""), ("BLUE", "Blue", "")] 

До сих пор я всегда использую это метод:

def list_to_items(lst): 
    items = [] 
    for i in lst: 
     items.append((i.upper(), i, "")) 
    return items 

Но он чувствует себя немного уродливым. Есть ли более приятный/более питонический способ сделать это?

ответ

2

Вы можете использовать понимание:

def list_to_items(lst): 
    return [(item.upper(), item.title(), '') for item in lst] 
3

Подобный список понимание, но немного по-другому.

Это map функция.

lst = ["Red", "Green", "Blue"] 
new_lst = map(lambda x: (x.upper(), x, ""), lst) 

Он в основном изменяет каждый элемент списка один за другим в соответствии с введенной вами функцией в качестве первого параметра. Что в этом случае:

lambda x: (x.upper(), x, "") 

Если вы не имеете представление о том, что лямбда есть, это почти как в средней школе по математике:

f(x) = (x.upper(), x, "") # basically defines a function in one line. 
+0

Другие ответы не использовать NewList для магазина – Arman

+1

Да, это выбор OP для переопределения ** lst **. Или вставьте этот код в функцию, как он это делал в вопросе. – Rockybilly

Смежные вопросы