簡體   English   中英

Python我可以將元組添加到生成器嗎?

[英]Python Can I add a tuple to a generator?

我想在前面添加('','Day')。 現在,它為1到31的數字提供了一個下拉菜單,我想在頂部選擇“天”。

DAY_CHOICES = (
    # I was hoping this would work but apparently generators don't work like this.
    # ('', 'Day'),
    (str(x), x) for x in range(1,32)
)

# I'll include this in the snippet in case there's some voodoo I can do here
from django import forms
class SignUpForm(forms.Form):
    day = forms.ChoiceField(choices=DAY_CHOICES)

您需要itertools.chain()

for i in itertools.chain(('foo', 'bar'), xrange(1, 4)):
  print i
DAY_CHOICES = ( (str(x),x) if x>0 else('','Day') for x in range(0,32) )

這似乎是對發電機的一種錯誤使用。 生成器不是列表,它是生成值序列的函數,因此不可能“將元組添加到生成器”。

模型初始化后,發電機將耗盡。 例如,您可能想稍后再使用DAY_CHOICES-這將是不可能的。

如果您在此處沒有使用生成器的特定原因,建議您將DAY_CHOICES改為列表:

DAY_CHOICES = [('', 'Day')] + [(str(x), x) for x in range(1,32)]

暫無
暫無

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

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