簡體   English   中英

如何將此 DRY 代碼放入 for 循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM