2015-02-02 5 views
4

Я действительно люблю питоны возможность сократить вещи с его сокращения для петель - но иногда, мне нужно, чтобы получить список, содержащий один значение несколько раз, что я сделал следующим образом:список Python с постоянным значением

plot(seconds, [z0 for s in seconds], '--') 

Но это неиспользованный s действительно беспокоит меня по эстетическим соображениям.

Есть ли более короткий (и более красивый) способ сделать это? Как какое-то особое «умножение» какой-то ценности?

+2

Вы можете размножать списки: '[1] * 3 -> [1, 1, 1]'. – Marius

+3

обычное имя для неиспользуемых переменных - '_', если вы не можете избавиться от него – njzk2

+0

, хотя иногда' _' предназначен для локализации строк ... и в других случаях это аутопопулированная переменная контекста, предоставляемая оболочкой python ... –

ответ

8

Вы имеете в виду как:

[z0] * len(seconds) 
+1

Я понятия не имел, что это было ... Время поразить основы –

+0

Это просто красивее, чем все, что я ожидал ... невероятно! Так же, как смущенный, как @ AdamHughes ... – Luke

+0

@AdamHughes Как сказал Йоран Бисли в своем ответе, список - это несколько ссылок на один и тот же объект. Поэтому, если объект может быть мутирован (например, список или dict), то изменения для одного элемента отражаются для каждого другого элемента (поскольку они являются одним и тем же объектом). Однако это безопасно, если объект неизменен (например, строки или цифры или кортеж). – Dunes

5

в зависимости от того, что z0 является

[z0]*len(seconds) 

справедливое предупреждение это не будет работать, как вы надеетесь в том случае, когда z0 является изменяемый тип данных

1

I чувствую себя так, как ты это делаешь, это не так грязно ... Но функция numpy.fill немного опрятна:

In [4]: import numpy as np 
In [5]: x=np.empty(5) 

In [6]: x.fill(8) 

In [7]: x 
Out[7]: array([ 8., 8., 8., 8., 8.]) 
Смежные вопросы