我正在处理我使用过temp变量的python代码,因为如果有任何内容存在,那么它将附加到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']
答案 0 :(得分:4)
您可以尝试这样的事情
>>> 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']
>>>
注意**我已将答案更新为不更新原始列表。
答案 1 :(得分:4)
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]
答案 2 :(得分:3)
临时版本的另一个版本
代码:
REPEAT = object()
def repeated(iterable):
for x in iterable:
R = last if (x is REPEAT) else x
yield R
last = R
演示:
>>> input = ['column1', REPEAT, REPEAT, REPEAT, 'column2', REPEAT, REPEAT]
>>> list( repeated(input) )
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']
答案 3 :(得分:1)
如果你有灵活性,你可以这样做:
>>> ['column1']*4 + ['column2']*3
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']