Вы можете сделать это более просто, используя plot()
вместо plot_date()
.
Сначала преобразуем ваши строки в экземпляры Python datetime.date
:
import datetime as dt
dates = ['01/02/1991','01/03/1991','01/04/1991']
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
y = range(len(x)) # many thanks to Kyss Tao for setting me straight here
Затем сюжет:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()
Результат:
[/g0]
Я попытался бы избежать этого, но если условный список абсолютно необходим, вы можете использовать этот трюк:
---
- hosts: localhost
gather_facts: no
vars:
a: 1
b: 1
c: 2
some_dictionary:
app: "{{ '[\"something\", \"something else\"' + (a + b == c) | ternary(', \"something conditional\"',' ') + ']' }}"
tasks:
- debug: var=some_dictionary.app
Он сформирует массивную строку (["item1","item2","item3"]
) и выполнимую переменный templator преобразует его в список перед назначением app
.
Есть ли причина, по которой вам нужно делать все за один раз?
Это довольно легко, если вы укажете дополнительные элементы для добавления в отдельные вары, так как вы можете просто сделать list1 + list2 .
---
- hosts: localhost
gather_facts: False
connection: local
vars:
mylist:
- one
- two
mycondition: False
myconditionalitem: foo
tasks:
- debug:
msg: "{{ mylist + [myconditionalitem] if mycondition else mylist }}"
На основании решения Konstantin я разработал следующее:
- hosts: localhost
gather_facts: no
vars:
a: "{{ True if var1|d(True) else False }}"
b: "{{ True if var2|d(False) else False }}"
n: "{{ True if var2|d(True) else False }}"
some_list: "{{ '[' +
a|ternary('\"item1\",',' ') +
b|ternary('\"item2\",',' ') +
n|ternary('\"itemN\",',' ') + ']' }}"
tasks:
- debug: var=some_list
Это создаст список с элементами «item1» до «itemN», но каждый элемент добавляется только в том случае, если соответствующий флаг расширяется до ' True '.
Надеюсь, это поможет.