如何跳过python操作中额外变量的使用?
我正在编写一个使用了temp变量的python代码,因为如果存在任何内容,它将被附加到temp变量,然后再附加到标头。如何跳过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变量 因此,它将限制将“”值附加到列表中 我正在寻找任何其他更好的方法来获得相同的结果,但不使用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']