如何跳过python操作中额外变量的使用?

如何跳过python操作中额外变量的使用?,python,for-loop,Python,For Loop,我正在编写一个使用了temp变量的python代码,因为如果存在任何内容,它将被附加到temp变量,然后再附加到标头。 若并没有内容,那个么将附加temp变量 因此,它将限制将“”值附加到列表中 我正在寻找任何其他更好的方法来获得相同的结果,但不使用temp变量。 任何建议都会有帮助 temp = '' header = [] for ind,content in enumerate(data): # enumerating for index & conte

我正在编写一个使用了temp变量的python代码,因为如果存在任何内容,它将被附加到temp变量,然后再附加到标头。
若并没有内容,那个么将附加temp变量

因此,它将限制将“”值附加到列表中

我正在寻找任何其他更好的方法来获得相同的结果,但不使用temp变量。
任何建议都会有帮助

    temp = ''
    header = []
    for ind,content in enumerate(data):   # enumerating for index & content in data
        if content and ind != 0:
            temp = content
            header.append(content)
        else:
            header.append(temp)
输入:

['column1', '', '', '', 'column2', '', '']
预期产出:

['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']

你可以试试这样的

>>> data=['column1', '', '', '', 'column2', '', '']
>>> header=data[:]
>>> for i in range(1,len(header)):
    if not header[i]:
        header[i]=header[i-1]


>>> header
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']
>>> 

注**我已将答案更新为“不更新原始列表”。

临时版本的另一个版本

代码:

演示:


如果您有灵活性,您可以:

>>> ['column1']*4 + ['column2']*3
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']

你能给出一些输入和输出的例子吗?用输入的预期输出更新了问题。输入列表的第一个条目是否等于
'
?我认为问题在于将
temp
变量命名为
temp
。这让我有半分钟的时间搞不清楚这个节目应该做什么。将其重命名为“previous_header”可能有助于首先解决您的问题。虽然我是从观察者的角度讲的,但命名变量确实很重要。上面修改了列表
数据
。如果不允许,请先复制:
header=list(data)
。然后还需要处理零情况:如果数据[0]为空,它应该变成什么?原始代码将输出列表元素
标题[0]
保留为空。+1用于尼斯特技。有一阵子我以为你在用帕斯卡写东西。。。。我不知道为什么。
>>> input = ['column1', REPEAT, REPEAT, REPEAT, 'column2', REPEAT, REPEAT]
>>> list( repeated(input) )
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']
for i, x in enumerate(data[1:], 1):
    if not x:
        data[i] = data[i-1]

# or
for i, x in enumerate(data[1:]):
    if not x:
        data[i+1] = data[i]
>>> ['column1']*4 + ['column2']*3
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']