2012-05-10 2 views
0

Я новичок в Python. Я хотел бы ввести 10 элементов в список. Внизу программа добавляет 10 элементов к каждому списку. Но ниже программа печатает 11 объектов в списке почему? Я получил эту программу от http://www.learnpython.org/page/Basic%20Operators link. Я хотел знать x = object(), что это значит?Почему список содержит более n элементов в python?

x = object() 
y = object() 
i = 0 
# change this code 
x_list = [x] 
y_list = [y] 
while(i < 10): 
    x_list.append((10)) 
    y_list.append(11) 
    i = i + 1 
#x_list = [x] 
#y_list = [y] 
big_list = x_list + y_list 

print "x_list contains %d objects" % len(x_list) # prints 11 objects, #Why? 
print "y_list contains %d objects" % len(y_list) # prints 11 objects, #Why? 
print "big_list contains %d objects" % len(big_list) 
print x_list.count(10) 
print y_list.count(11) 
    print big_list.count(10) 
# testing code 
if x_list.count(x) == 10 and y_list.count(y) == 10: 
    print "Almost there..." 
if big_list.count(x) == 10 and big_list.count(y) == 10: 
    print "Great!" 
+1

Подсказка: они хотят, чтобы вы использовали операторы '*' и '+' в этом упражнении, а не в цикле. –

+0

@ lazy: Я понял суть. Спасибо за эту помощь. Но хотелось бы знать, буду ли я использовать «цикл», есть ли проблемы.Я не могу достичь своей цели –

ответ

3

learnpython.org basic operators page содержит некоторые примеры использования арифметических операторов в разных контекстах, включая списки. На основе быстрого чтения учебника в этой странице, вероятно, ответ, что авторы страницы после того, как будет:

x_list = [x] * 10 
y_list = [y] * 10 
big_list = x_list + y_list 

Какой бы создать список с 10 х: s в нем.

Вы использовали цикл, чтобы сделать это, что намного более гибким способом. Более питоновский способ заполнения списка с использованием цикла будет, например, использовать списковых:

x_list = [x for i in xrange(10)] 

или использовать for цикл, то вам не придется следить за индексом себя:

for i in xrange(10): 
    x_list.append(x) 
0

x_list содержит X плюс 10 раз 10 = 11 ...

y_list - то же самое.

при вводе x_list = [x] это означает, что список инициализируется как список, содержащий только x.

4

x_list = [x] => 1 объект. while(i < 10): x_list.append((10)) => 10 объектов (от 0 до 9) Итак, 11 совершенно нормально. Вы должны были установить x_list = [] (пустой список), чтобы не иметь этот 1-й элемент.

1

object() только что генерирует новый экземпляр класса object. вы сначала вставляете этот элемент в x_list, затем добавляете еще 10 элементов.

.
3

Ниже программа добавляет 10 элементов для каждого из список. Но ниже программа печатает 11 объектов в списке, почему?

Потому что в списке было 1 элемент, прежде чем вы начали добавлять. Список [x] содержит 1 элемент, x. 1 + 10 = 11.

Я хотел знать x = объект(), что это значит?

Это означает, что именно оно говорит: «x должно быть именем для результата вызова object». object - это класс, поэтому вызов его создает экземпляр. Экземпляр object - это именно то, на что это похоже - просто объект, в котором нет ничего интересного.

+0

Спасибо большое ... –

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