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自己。谢谢你的课!