2014-01-28 5 views
0

В python есть способ инициализировать класс с n-вложенными кортежами? с x от 0 до n, а y - пустой список.Инициализирует класс с n-вложенными кортежами

Что я имею в виду:

Предположим, у вас есть класс, такие как:

class NestedTuples: 
    def __init__(self, tuple): 
     self.tuple = ? 

так, если вы должны были сделать что-то вроде:

t = NestedTuples(4) 

будет создавать:

((0, []), (1, []), (2, []), (3, [])) 

ответ

2

Это работает *:

class NestedTuples: 
    def __init__(self, num): 
     self.tuple = tuple((x, []) for x in range(num)) 

Смотрите демонстрацию ниже:

>>> class NestedTuples: 
...  def __init__(self, num): 
...   self.tuple = tuple((x, []) for x in range(num)) 
... 
>>> t = NestedTuples(4) 
>>> t.tuple 
((0, []), (1, []), (2, []), (3, [])) 
>>> 

Наконец, вот ссылка на generator expressions.


* Примечание: Я должен переименовать параметр NestedTuples.__init__tuple. Вы никогда не должны создавать переменную с тем же именем, что и один из встроенных модулей. Это затмит его.

+0

Спасибо :) не понимал, что это будет так просто. – Sc4r

1

Простой код:

param = 4 
nestedTuple = tuple([(i,[]) for i in range(param)]) 
print nestedTuple 

Выход:

((0, []), (1, []), (2, []), (3, [])) 
1
In [74]: class NestedTuples: 
    ...:  def __init__(self, n): 
    ...:   self.tuple = tuple((i, []) for i in range(n)) 
    ...:   

In [75]: t = NestedTuples(4) 

In [76]: t.tuple 
Out[76]: ((0, []), (1, []), (2, []), (3, [])) 
Смежные вопросы