Soru Listeler listesine bir liste listesi dönüştürme


Bir liste listesini liste listesine dönüştürmek için bu işlevi yazdım. Bunu yapmanın daha zarif / Pythonic bir yolu var mı?

def get_list_of_lists(list_of_tuples):
    list_of_lists = []                                                          
    for tuple in list_of_tuples:
        list_of_lists.append(list(tuple))

    return list_of_lists

25
2018-02-12 11:47


Menşei




Cevaplar:


Kullanabilirsiniz liste anlama:

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> list_of_lists = [list(elem) for elem in list_of_tuples]

>>> list_of_lists
[[1, 2], [4, 5]]

38
2018-02-12 11:48



Sadece liste anlatmalarını açıklayan bir link ekledim. - Gareth Latty


Liste kavraması tamamen geçerli bir cevap olsa da, sadece türü değiştirirken, alternatifi dikkate almaya değer olabilir, map() gömme:

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]

map() Yerleşik basit bir şekilde, yinelenen yinelenen öğenin her bir öğesine bir satılabilir uygular. Bu, bu özel görev için iyi yapar. Genel olarak, liste kavramaları daha karmaşık ve etkilidir ( map() ihtiyacın var lambda), ama sadece türü değiştirmek istediğiniz yere map() çok açık ve hızlı olabilir.

Burada 2.x kullanıyorum, bu yüzden bir liste aldık. 3.x'te 3.x'te bir liste istiyorsanız, yinelenebilir (tembel) olacaksınız. list(map(...)). Kullanımlarınız için yinelenebilir durumdaysanız, itertools.imap() tembel sağlar map() 2.x'te


15
2018-02-12 11:50



Ayrıca Py2'de map Lambdalar listeden daha hızlıdır. :) - Bhargav Rao♦
@BhargavRao Muhtemelen ihmal edilebilir miktarda - kodunuzdaki performans darboğazı olarak tanımlanmadıkça, okunabilirlik her zaman öncelikli olmalıdır. - Gareth Latty
her zaman düşünürüm map liste-comp'ten daha okunabilirdi. Ama evet, hız farkı oldukça küçük. - Bhargav Rao♦
Okuduğunu okuyanlar günlük kodlar gibi daha okunabilir - okunabilirlik özneldir (işlevsel diller için kullanılanlar map()), ancak harita için okunabilir tek durumun, mevcut bir işlevi veya türü kullandığınız basit bir durum olduğunu söyleyebilirim - yeni bir işlevi (lambdas dahil) map() asla liste kavramalarından daha okunabilir olmayacaktır. (Ve not ettiğiniz gibi, daha az performanslı). - Gareth Latty