2013-08-14 1 views
1

Как создать новый экземпляр списка или словаря при каждом вызове метода? Ближайшее, что я могу сравнить то, что я хотел бы сделать это new ключевое слово в Java или C#Создать новый экземпляр списка или словаря без класса

+1

'return []'? Я не уверен, что вы подразумеваете под этим. – Blender

+1

У вас есть изменяемые проблемы с аргументами по умолчанию? – user2357112

ответ

0

словарь Пример: Пример

def create_dict(): 
    return {} 

Список:

def create_list(): 
    return [] 

Использование:

a = create_dict() #for a new empty dictionary 
b = create_list() # for new empty list 

Все это работает, но на самом деле это не так полезно.

+0

Это как можно ближе к тому, что я хочу. Благодарю. – arynhard

+0

Почему бы не 'return {}' в 'create_dict()'? – 0xc0de

+0

@ 0xc0de хороший улов, исправлено! –

0

Если у вас есть список по умолчанию L и вы хотите, чтобы убедиться, что вы работаете со списком, равным L и не мутагенными L себя, можно инициализировать локальную переменную list(L). Это то, что вы имели ввиду?

1

Эти функции уже определены, есть Конструкторы встроенных типов - словарь и список:

x = dict() 
y = list() 

, который является эквивалентом

Map x = new TreeMap(); // or other dictionary implementation 
List y = new ArrayList(); // or other list implementation 
0

Наиболее распространенный способ в Java (на сегодняшний день) составляет:

y= [] # new empty list 
x= {} # new empty dictionary 

Почему так коротко? Поскольку язык поощряет использование высокоуровневых структур данных, подобных этим.

В Python конструкторы вызываются с именем класса (например, Java), но не нуждаются в new или любом другом ключевом слове. Как уже упоминалось в другой ответ (ов), это делает следующий синтаксис справедливо:

x= list() 
y= dict() 

Однако, вы редко встретите их на практике.

Список литералов (например, [1,2,3,4]) создает новые списки и предварительно заполняет их. Словарные литералы (например, {'Red':'Rojo','Yellow':'Amarillo','Green':'Verde'}) создают новые словари и предварительно заполняют их.

Идентификаторы набора (например, {'Morning','Afternoon','Evening','Night'}). Однако пустые наборы должны быть созданы как set(). Синтаксис {} зарезервирован для создания пустых словарей, поскольку они более распространены.

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