簡體   English   中英

等同於“如果”的Python

[英]Python “and if” equivalent

假設“ mylist”可以包含值“ video”,“ audio”,“ visual”或全部三個。 如果希望在“ mylist”中找到一個字符串,我希望腳本將匹配的數據追加到“文件”列表中,如果“ mylist”中只有一個字符串,則可以工作,但是如果有多個字符串,則只有第一個字符串可以工作在“ mylist”中匹配。 有什么我可以代替“ ifif”的“ elif”使用的嗎?

 if request.method == 'POST':
    mylist = request.POST.getlist('list')
    files = []
    if 'video' in mylist:
      files.append('/home/dbs/public_html/download/codex/codex.html')
    elif 'audio' in mylist:
      files.append('/home/dbs/public_html/download/audio/audio_player.html')
    elif 'visual' in mylist:
      files.append('/home/dbs/public_html/download/visual/visual.html')
    return HttpResponse(files)
  else:
    return http.HttpResponseForbidden()

只需使用if代替elif

if 'video' in mylist:
    files.append('/home/dbs/public_html/download/codex/codex.html')
if 'audio' in mylist:
    files.append('/home/dbs/public_html/download/audio/audio_player.html')
if 'visual' in mylist:
    files.append('/home/dbs/public_html/download/visual/visual.html')

您還可以使用一個映射對象和一個循環,如果存在多個項目,則更好,因為您不必`... in mylist代碼中重復`... in mylist

paths = {
    'video': '/home/dbs/public_html/download/codex/codex.html',
    'audio': '/home/dbs/public_html/download/audio/audio_player.html',
    'visual': '/home/dbs/public_html/download/visual/visual.html'
}

files += [path for key, path in paths.iteritems() if key in mylist]

為什么不只是呢? 你想,如果它發生各種情況。 每個子句之間沒有關系。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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