在我看來,下面的兩個語句在python3中做了同樣的事情。當我<x和範圍(x)中的i之間的區別?
while i < x:
print("hi")
i+=1
和
for i in range(x):
print("hi")
有沒有辦法,我在這裏失蹤的功能區別?
如果是這樣,你會在什麼情況下使用一個嗎?
在我看來,下面的兩個語句在python3中做了同樣的事情。當我<x和範圍(x)中的i之間的區別?
while i < x:
print("hi")
i+=1
和
for i in range(x):
print("hi")
有沒有辦法,我在這裏失蹤的功能區別?
如果是這樣,你會在什麼情況下使用一個嗎?
通常而用於當你不確切地知道何時停止。 對於循環用於知道您要執行某些操作的次數。
例如: 你有一個數字,每次你做了一些計算,只有當結果小於給定限值時,則需要塗用而停止循環,你不知道多少時間,你必須運行該功能。
在另一方面,如果你想要去的直通列表的n個元素,你可以使用一個而但更符合邏輯,因爲你知道這個列表的大小。
在您的例子是沒有區別的(也許只是基於表演講,timeit可以給你更多的信息)
編輯1 我試着用而做同樣的功能和對於(10000倍0到15的整數之和)和對於循環更快。如果你可以使用它,你應該選擇這一項(也有少變量來設置):
版本爲
s = time.time()
for i in range(10000):
t = 0
for j in range(15):
t += j
print(time.time()-s) => 0.0132s
版本而
s = time.time()
i = 0
while i < 10000:
t = 0
j = 0
i += 1
while j < 15:
t += j
j += 1
print(time.time()-s) => 0.0202s
一個重要的一點也...與wh ile你可以有一個無限循環,因爲它是不可能的:p
嚴格地說,也可以通過'for x in y:'''''''''''''可以是一個不會結束的生成器。 –
你是對的:)我從來沒有想過這個!但是,你可能還需要一個「不正確的」,而在發電機的權利? –
如果你將'xrange'替換爲'range'(在Python 2中 - 無論如何,'range'在Python 3中都是這樣工作的),你會得到一個稍微快一點的時間。並且更高效的內存利用率。 –
當你需要滿足條件時使用第一個,當你想要迭代序列時使用第二個。 –
嗯,它們是否相等取決於循環之前「i」的值。 – enedil