2014-10-29 2 views
0
def substitute(clues,words): 
    subst_words = [] # <== HERE 
    for i in range(len(words)): 
      word = words[i] 
      for j in range(len(clues)): 
       word = word.replace(clues[j][1],clues[j][0]) 
      subst_words.append(word) 
    return subst_words 

Почему перед использованием используются подстановочные слова, назначенные пустой паре кронштейнов? Глупый вопрос, который я знаю, но я не уверен ...
Кроме того, как я могу применить Tuple в замене списка, если это вообще возможно?Почему переменные назначаются пустым скобкам перед использованием?

+0

В стороне: вместо написания 'for i in range (len (words)):' just do 'для слова в словах:' а также '' для подсказки в подсказках' позже. Ваш код будет выглядеть намного чище. –

+0

Возможно @Steven Rumbalski, но тем не менее при этом я полностью нарушаю код с количеством ошибок во время выполнения, так как «i» счетчик определен позже в программе ... –

ответ

0

переменная инициализируется в списке.

Uninitialized variables can lead to resource bugs

Если бы не было заявлено, что не будет доступен. Если он был объявлен, но инициализирован None, вы не сможете использовать функцию добавления на нем.

Кроме того, он объявляется в самом дальнем объеме функции. Это означает, что фигурные скобки, вложенные дальше внутри функции, будут иметь доступ к переменной. Если бы он был объявлен в цикле for, например, вы не смогли бы получить доступ к нему из-за цикла for.

+1

-1. Здесь у нас есть создание и назначение объектов. Инициализация - неправильная концепция. –

+0

@StevenRumbalski, обеспечивающий правильный ответ, был бы более полезен, чем downvoting. –

0

Это означает, что у вас есть пустой «список» в отличие от любых переменных. Он также позволяет вам вызывать специальные методы, такие как .append, используемые в вашем коде для subst_words.

-3
aList = [] # initialises aList to type(aList) == list 

Таким образом, питон заранее знает, что эта переменная имеет тип списка, даже перед тем, как первые элементы списка хранятся

+0

Пожалуйста, не изменяйте сообщение, если это не улучшает содержание, которое не было – user3666197

+2

Ваше форматирование все испортилось. Код должен идти в кодовом блоке, правила горизонтальной линии не должны идти непосредственно под текстом. – RPGillespie

+5

Остановить редактирование/откат ради бога –

3

пустой список используется для инициации приложенной, что делается в течение цикла. Затем список возвращается в конце. Вы можете собрать все данные из цикла и добавить его в пустой список и использовать его в своей основной функции.

-3

Набор для двойных скобок равно установить для "списка()"

https://docs.python.org/2/library/functions.html#list

редактировать:

Так вы измените вопрос?

1 - Если объявить пустой список это obivious будет пустой список

2 - Если Wanna список с чем-то внутри просто положить что-то внутри

3 - использовать кортеж: mytuple =() или mytuple = tuple(). Это то же самое.

Если вы считаете ответ глупым, прочитайте снова вопрос. И речь идет о типах данных на python, поэтому поиск следующего типа на нем в документах.

+0

Нет, это не так. Вы имеете в виду необязательные аргументы функции. –

2

Он просто инициализирует subst_words пустым списком. Поскольку списки написаны с квадратными скобками в Python, пустым списком является только [].

Вы могли бы написать

subst_words = list() 
+0

Okay @damienfrancois, как я мог бы реализовать кортеж вместо списка в этом коде, если это вообще возможно? –

+0

Кортежи неизменяемы, поэтому вы не можете их расширять, у них нет метода 'append'. Кортеж, созданный пустым, всегда будет пустым. Вы можете создать новый кортеж на каждой итерации, объединив кортеж из предыдущей итерации с результатом итерации curret. См. Http://stackoverflow.com/questions/1380860/add-variables-to-tuple – damienfrancois

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