假設我想創建一個從列表返回固定數量用戶的生成器,並且如果我想要的用戶數量大於列表長度,它只是重複上一個用戶。我寫了一個發電機來此做如下:有沒有更好的方法來定義這個發生器?
def gen_users(users, total):
num_users = len(users)
cur_user = 0
while cur_user < total:
if cur_user >= num_users:
yield users[-1]
else:
yield users[cur_user]
cur_user += 1
所以,如果我有用戶users = ['one', 'two', 'three']
的列表和我稱之爲gen_users(users, 5)
我回來one, two, three, three, three
。
有沒有更pythonic的方式來做到這一點?正在使用生成器來解決這個問題嗎?
正是我想要的,我知道必須有一個更好的方式來做到這一點!謝謝。 –
如果'total'很大,使用'xrange'可能會有所改進。 – Bach
@HansZauber,我使用'range'來確保這段代碼在Python 2.x,3.x中運行。 – falsetru