通过第2步理解python列表

通过第2步理解python列表,python,list,Python,List,xlabels=[“第一”、“第二”、“第三”、“第四”] 有没有办法让2逐步理解列表 for i in range(0,len(xlabels)): xlabels[i]="" 对于xlabels中的i,变为[” 它将列表变成空白。输出:[“”,“”,“”,“”] 那怎么办 for i in range(0,len(xlabels),2): xlabels[i]="" 我想把列表中的其他项目都变成空白。输出:[“”、“第二”、“第四”]通过使用带有步骤的range(),您已

xlabels=[“第一”、“第二”、“第三”、“第四”]

有没有办法让2逐步理解列表

for i in range(0,len(xlabels)):
    xlabels[i]=""
对于xlabels中的i,变为
[”

它将列表变成空白。输出:
[“”,“”,“”,“”]

那怎么办

for i in range(0,len(xlabels),2):
    xlabels[i]=""

我想把列表中的其他项目都变成空白。输出:
[“”、“第二”、“第四”]

通过使用带有步骤的
range()
,您已经在正确的轨道上了。列表理解倾向于创建新列表,而不是修改现有列表。但是,您仍然可以执行以下操作:

>>> xlabels = [1, 2, 3, 4]
>>> [xlabels[i] if i % 2 != 0 else '' for i in range(len(xlabels))]
['', 2, '', 4]

就个人而言,我会同时使用列表片段和列表理解:

>>> full_list = ['first', 'second', 'third', 'fourth', 'fifth']
>>> [element for element in full_list[::2]]
['first', 'third', 'fifth']

除非您需要更通用,否则您也可以这样做:

>>> xlabels = ["first", "second", "third", "fourth"]
>>> [i%2 * label for i, label in enumerate(xlabels)]
['', 'second', '', 'fourth']

这是没有意义的:列表理解定义了一个新的列表。你不能在跳过每一秒的元素时定义一个新的列表…嗯…
对于范围内的i(0,len(xlabels),2):xlabels[i]=''
的输出是
['','',second','','',fourth']
@KevinGuan oops,只是改变了它关于
xlabels[::2]=[''*((len(xlabels)+1)//2)
。这会修改原始列表,就像在
for
循环版本中一样。@Blckknght或效率较低但更简单的:
xlabels[::2]=[“”]*len(xlabels[:2])
。它还创建了一个新列表,而不是修改现有的
xlabels
,因此您必须重新分配
xlabels
结果。