Python 我可以得到1或3个';无';值,但不是2

Python 我可以得到1或3个';无';值,但不是2,python,zip,itertools,Python,Zip,Itertools,以下是我所拥有的: item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'} filler = [] for i in range(0,365): filler.append(None) filler1=[] for i in range(0, 2): filler1.append(None) filler2=[] for i in range(0, 1): filler2.append(No

以下是我所拥有的:

item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}

filler = []
for i in range(0,365):
    filler.append(None)

filler1=[]
for i in range(0, 2):
    filler1.append(None)

filler2=[]
for i in range(0, 1):
    filler2.append(None)

names = item_dictionary.values()
names_filled = list(itertools.chain.from_iterable(zip(names, filler1 * len(names))))
#Returns ['Death Rune', None, 'Third-Age Full', None]

我正在尝试获取
[‘死亡符文’,无,无,‘三岁满’,无,无]
但我似乎无法获取,有人能帮我吗?谢谢。

那么:

In [171]: item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}

In [172]: names = item_dictionary.values()

In [173]: [n for name in names for n in [name, None, None]]
Out[173]: ['Death Rune', None, None, 'Third-Age Full', None, None]
或者,如果您想轻松地将
None
s的数量更改为其他值

In [174]: [n for name in names for n in [name] + [None]*2]
Out[174]: ['Death Rune', None, None, 'Third-Age Full', None, None]
那么:

In [171]: item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}

In [172]: names = item_dictionary.values()

In [173]: [n for name in names for n in [name, None, None]]
Out[173]: ['Death Rune', None, None, 'Third-Age Full', None, None]
或者,如果您想轻松地将
None
s的数量更改为其他值

In [174]: [n for name in names for n in [name] + [None]*2]
Out[174]: ['Death Rune', None, None, 'Third-Age Full', None, None]

这不是你想要的吗

names_filled = list(itertools.chain.from_iterable([[n,None,None] for n in names])

这不是你想要的吗

names_filled = list(itertools.chain.from_iterable([[n,None,None] for n in names])

首先,您可以更轻松地创建这些填充物:

filler = [None] * 365
filler1 = [None] * 2
filler2 = [None]
要真正回答您的问题,您可以压缩两个以上的iterables,因此只需压缩第三个填充:

>>> list(itertools.chain.from_iterable(zip(names, [None] * len(names), [None] * len(names))))
['Third-Age Full', None, None, 'Death Rune', None, None]
然后您还可以使用
itertools.zip\u longest
,它根本不需要您展开那些填充项,只需要自动展开它们(
zip\u longest
将使用
None
作为默认的填充值):


或者,正如unutbu所建议的,使用列表理解。

首先,您可以更轻松地创建这些填充内容:

filler = [None] * 365
filler1 = [None] * 2
filler2 = [None]
要真正回答您的问题,您可以压缩两个以上的iterables,因此只需压缩第三个填充:

>>> list(itertools.chain.from_iterable(zip(names, [None] * len(names), [None] * len(names))))
['Third-Age Full', None, None, 'Death Rune', None, None]
然后您还可以使用
itertools.zip\u longest
,它根本不需要您展开那些填充项,只需要自动展开它们(
zip\u longest
将使用
None
作为默认的填充值):


或者,正如联合国大学建议的那样,使用列表理解。

谢谢,我想我在考虑这一点时太狭隘了。我认为列表理解应该是可行的,但我无法正确排序,最后不得不依靠itertools自己。谢谢你的课!谢谢你,我想我在考虑这个问题时太狭隘了。我认为通过列表理解应该是可能的,但我无法正确排序,最后不得不依靠itertools自己。谢谢你的课!