2016-03-27 10 views

cevap

4

Basit bir yaklaşım olabilir. vb listeleri, küpe, set, herhangi yuvalanmış yapısını işleyebilir böylece, Iterables türlerini koruyan bir daha sofistike versiyonu deneyin-bloğunda bu satırı olurdu:

return type(li)(map(double, li)) # should work in Python 2 and 3 

Bu başlatır ve bir nesne döndürür li 'un orijinal türü (liste, tuple, vb.), bir liste (Py2) veya li içerisindeki tüm ikiye katlanmış öğelerin bir harita nesnesi (Py3) içerir. Eğer liste sadece listeleri ve sayılar olacağını garanti ederseniz

+1

I bir şirket ölçülü Python 2.7 kullanıcı olarak değil, 2. – TigerhawkT3

+0

anlıyorum Python diliyle yaptığı gibi bir 'list 'daha' harita() Python 3'te 'nesnesi döndüren') (haritada 'gibi anlama tutarak olanlar tavsiye nüanslar beni kızdırır. Tekrar thx;) – schwobaseggl

2

, bunu yapabilirsiniz:

def double(numberlist): 
    return [double(x) if isinstance(x, list) else x * 2 for x in numberlist] 

argüman herhangi iterable olabilir varsa, bunu yapabilirsiniz:

from collections import Iterable 
def double(numberlist): 
    return [double(x) if isinstance(x, Iterable) else x * 2 for x in numberlist] 
İlgili konular