0

我正在编写一个我使用临时变量的python代码,因为如果存在任何内容,它将被附加到临时变量,然后它将被附加到标题。
如果没有内容,则将附加临时变量。

因此,它将限制将 '' 值附加到列表中。

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

    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']
4

4 回答 4

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']
>>> 

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

于 2012-04-14T07:39:43.560 回答
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]
于 2012-04-14T08:03:42.503 回答
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']
于 2012-04-14T08:00:53.097 回答
1

如果你有灵活性,你可以这样做:

>>> ['column1']*4 + ['column2']*3
['column1', 'column1', 'column1', 'column1', 'column2', 'column2', 'column2']
于 2012-04-14T08:05:59.290 回答