[英]How can I put this DRY code into a for loop?
我正在 pyplot 中格式化圖例,並成功獲得了我想要的 output。 但是,我試圖弄清楚如何將此代碼格式化為 for 循環。
這是我試圖循環的代碼:
L.get_texts()[0].set_text('Global')
L.get_texts()[1].set_text('Bangkok')
L.get_texts()[2].set_text('NYC')
L.get_texts()[3].set_text('Perth')
L.get_texts()[4].set_text('Quito')
L.get_texts()[5].set_text('Santiago')
L.get_texts()[6].set_text('Singapore')
L.get_texts()[7].set_text('Tianjin')
我可以循環每個索引 [0,7],但我也不知道如何循環 set_text('argument')。 這是我到目前為止所嘗試的:
legend_labels = ['Global', 'Bangkok', 'NYC', 'Perth', 'Quito', 'Santiago',
'Singapore', 'Tianjin']
for i in range(8):
L.get_texts()[i].set_text(legend_labels)
我制作了我想要循環的列表legend_labels。 我嘗試了一些不同的嵌套 for 循環,但似乎無法使其正常工作。
從我現在正在嘗試的代碼中,這是我得到的 output:注意只有 'Tianjin' 打印在圖例上。
這是我想要的 output:列表中的每個項目都印在圖例上。
您可以使用enumerate
來為您提供索引i
以及 label
for i, label in enumerate(legend_labels):
L.get_texts()[i].set_text(label)
您需要將第 i 個 label 分配給 i't 文本:
for i in range(8):
L.get_texts()[i].set_text(legend_labels[i])
更多的pythonic將是
for text, label in zip(L.get_texts(), legend_labels):
text.set_text(label)
legend_labels = ['Global',
'Bangkok',
'NYC',
'Perth',
'Quito',
'Santiago',
'Singapore',
'Tianjin'
]
for i in range(8):
L.get_texts()[i].set_text(legend_labels[i])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.