12

Python でリストをスキャンする必要があります。ファイルからロードして簡単な操作を行うことはできますが、次のことをしようとしていました:

L = [1,2,3,4,5,6,7,8]

最初の要素から始めて、次の出力を生成します。

1
  2,3,4,5,6,7,8
  3,4,5,6,7,8
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
2
  3,4,5,6,7,8
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
3
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
4
  5,6,7,8
  6,7,8
  7,8
  8

等々。

私はこのようなことを試みていました:

fo = open(sys.argv[1], 'r')
L = fo.readlines()
for i in range(len(L)):
    print str(L[i])
    for j in range(len(L)-1-i):
        print '...' + str(L[i+j+1])

私たちを手伝ってくれますか ?

4

2 に答える 2

13

どうですか?素晴らしく読みやすい:

>>> for i, j in enumerate(L):
...     print L[i]
...     temp = map(str, L[j:])
...     while temp:
...             print ' ', ','.join(temp)
...             temp = temp[1:]
... 
1
  2,3,4,5,6,7,8
  3,4,5,6,7,8
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
2
  3,4,5,6,7,8
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
3
  4,5,6,7,8
  5,6,7,8
  6,7,8
  7,8
  8
...

while tempリストtempが空でないことを意味します。map(str, L[j:])リストが整数でいっぱいであるため、ここで呼び出す必要があります (したがって、str.joinメソッドは機能しません) 。


withファイルを操作するときにステートメントを使用する方がよりpythonicです。

with open(sys.argv[1], 'r') as fo:
    L = fo.readlines()
于 2013-08-01T09:47:43.063 に答える