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
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 に答える
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 に答える
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 に答える