2

次のことを行うために、リストに同等のステートメントがあるかどうかを知りたいです。MATLABでは、次のことを行います

fid = fopen('inc.txt','w')
init =1;inc = 5; final=51;
a = init:inc:final
l = length(a)
for i = 1:l
   fprintf(fid,'%d\n',a(i));
end
fclose(fid);

つまり、初期値、最終値、増分があります。配列を作成し(Pythonのリストと同等だと読んでいます)、ファイルに出力する必要があります。

4

6 に答える 6

10

Python では、 Matlab のコマンドrange(start, stop + 1, step)のように使用できます。start:step:stopただし、Matlab の機能とは異なり、 、、およびがすべて整数のrange場合にのみ機能します。浮動小数点値で機能する並列関数が必要な場合は、次のコマンドを試してください。startstepstoparangenumpy

import numpy as np

with open('numbers.txt', 'w') as handle:
    for n in np.arange(1, 5, 0.1):
        handle.write('{}\n'.format(n))

Matlab とは異なり、rangeどちらも 、 、np.arangeの順startに引数が必要であることに注意してください。また、Matlab 構文とは異なり、両方とも現在の値が停止値以上になるとすぐに停止することに注意しください。stopsteprangenp.arange

http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html

于 2013-08-20T02:06:10.267 に答える
3

このための関数を簡単に作成できます。関数の最初の 3 つの引数は整数としての範囲パラメーターになり、最後の 4 番目の引数は文字列としてのファイル名になります。

def range_to_file(init, final, inc, fname):
    with open(fname, 'w') as f:
        f.write('\n'.join(str(i) for i in range(init, final, inc)))

カスタム値を使用して呼び出す必要があります。

range_to_file(1, 51, 5, 'inc.txt')

したがって、出力は(fnameファイル内で)次のようになります。

1
6
11
16
21
26
31
36
41
46

注: Python 2.xa では range() リストを返し、Python 3.xa では range() 不変のシーケンス イテレータを返します。リストを取得する場合は、次のように記述する必要があります。 list(range())

于 2013-08-20T00:56:15.677 に答える
1

test.py含む:

#!/bin/env python                                                                                                                                                                                  

f = open("test.txt","wb")                                                                                                                                                                           
for i in range(1,50,5):                                                                                                                                                                             
    f.write("%d\n"%i)

f.close()

実行できます

python test.py

ファイルtest.txtは次のようになります。

1
6
11
16
21
26
31
36
41
46
于 2013-08-20T01:24:51.250 に答える
-1
open('inc.txt','w').write("\n".join(str(i) for i in range(init,final,inc)))
于 2013-08-20T00:56:08.077 に答える