2013-04-09 38 views
-3

我想:你如何使循環總是在開始時打印零,而沒有零元素作爲第一個元素?

mylist=[1,2,3]               
for i in mylist:            
    time=0               
    time=time+i             
    print(time, end="")          

,並得到:

123 

,但我想:


感謝您的幫助:)

+0

'打印「0%d '%(time)'? – Aif 2013-04-09 18:43:16

+0

你的意思是你想用前導0填充字符串,所以它總是固定的長度? – 2013-04-09 18:43:50

+0

你爲什麼要這樣?爲什麼要打印清單,如果你想要一些不同的東西?預先將0插入列表的前面會更好嗎?或者你想從0開始循環?如果是最後一種情況,則完全跳過列表並遍歷範圍(4)或xrange(4)。 – 2013-04-09 18:44:43

回答

0

既然你如果零提及不是第一個元素,請與:

mylist = [1,2,3] 
print(('0' * (1 if mylist[0] else 0)) + ''.join(str(x) for x in mylist)) 

這給你一個0時開始,如果0是不是在MYLIST :)

>>> mylist = [1,2,3] 
>>> print(('0' * (1 if mylist[0] else 0)) + ''.join(str(x) for x in mylist)) 

>>> mylist = [0,1,2,3] 
>>> print(('0' * (1 if mylist[0] else 0)) + ''.join(str(x) for x in mylist)) 

4

一個多種方式的第一個元素將是沒有結束列表迭代,但在新的清單,其中包括零開始,然後是你的清單。像這樣:

mylist=[1,2,3]            
for i in [0] + mylist: 
    print(i, end="") 
+0

不考慮如果0已經存在,但它的工作原理假定你不關心:)(看看標題模糊地描述「沒有零作爲第一個元素) – Torxed 2013-04-09 18:50:18

+2

是的,有四到五個不同的原因這篇文章的答案是因爲需求不明確,是否處理與該問題相關的案例?我不知道。 – 2013-04-09 19:01:26

+0

哈哈,在這個問題上得到你的認同:P狂野西部在這裏:) – Torxed 2013-04-09 19:03:05

4

如果輸入列表是不是你的控制之下,你既要在前面加上0它也不是建立一個新的拼接列表(例如,如果它是非常大的),你可以使用itertools.chain()

import itertools 

mylist = [1, 2, 3]               
for i in itertools.chain([0], mylist): 
    pass # Your loop code... 
+0

itertools很酷,雖然這對於任務來說有點矯枉過正。 +1無論如何 – J0HN 2013-04-09 18:53:07

+0

同樣在這裏,過度殺傷,但儘管事實上它是一個奇怪的描述問題的完美解決方案。 – Torxed 2013-04-09 19:06:06

+1

不是,沒有過度殺傷,當你有這個想法時,他們正確的想要O(N)連接嗎? – jamylak 2013-04-10 10:28:50

0

OK,看編輯的代碼:

mylist=[1,2,3]               
for i in mylist:            
    time=0               
    time=time+i             
    print(time, end="") 

顯然做time=0然後time=time+i每循環一次我與time=i相同。所以,print(time, end="")print(i, end="")相同。所以,讓我們試圖修復它之前把它簡化:

mylist=[1,2,3] 
for i in mylist: 
    print(i, end="") 

現在,我們怎麼把它打印0在開始?那麼,有沒有0在循環取得任何進展,所以它非常有來循環之前:

mylist=[1,2,3] 
print(0, end="") 
for i in mylist: 
    print(i, end="") 
+0

考慮一下mylist是未知的情況,過早地打印0會導致額外的零,這可能是不想要的:)你是在正確的軌道壽命和很好的澄清! – Torxed 2013-04-09 19:05:08

+0

@Torxed:是什麼讓你覺得額外的0是不需要的?這個問題很模糊,很難理解,但它說「總是在開始時打印零」,而不是「如果不存在則添加前導0」或「用0填充4個字符」,所以...這是我的猜測他的意圖是什麼。 – abarnert 2013-04-09 19:38:39

+0

「沒有零元素作爲第一個元素」我假設它等於「如果元素[0]不爲零打印零」:) – Torxed 2013-04-09 20:27:57

-1
mylist=[1,2,3]               
for i in mylist:            
    time=0               
    time=time+i             
    print(time, end="") 

更改爲:

mylist = [1, 2, 3] 
print('0', end='') 
for i in mylist: 
    print(str(i), end='') 
+0

考慮mylist未知的場景,過早地打印0會導致額外的零,這可能是不需要的:) – Torxed 2013-04-09 19:04:11

相關問題