2016-07-04 74 views
1
list = [] 

def lecture(x): 
    for x in range(1,x): 
     print 'lecture', x 

所以我有這樣的代碼,給出的循環和追加到列表

lecture 1 
lecture 2 

lecture(3)輸入的結果。現在,當我更改代碼以

list = [] 

def lecture(x): 
    for x in range(1,x): 
     y = 'lecture', x 
      print y 

我得到的

('lecture', 1) 
('lecture', 2) 

輸出最後,我想知道這是爲什麼,因爲我試圖找到追加第一的辦法的情況下結果,在:

lecture 1 
lecture 2 

成一個列表,但我不能,因爲我得到一個列表用逗號等從它的數量分離講座號碼

+2

因爲回答'y '是一個元組,這就是當你打印它們時元組的樣子。嘗試使用'str.format'顯式的字符串格式,或者使用print函數來更好地控制'from __future__ import print_function'(或者移到Python 3.x,你應該這樣做)。 – jonrsharpe

+0

爲什麼我的大學部門建議我們不要以3.x開頭? – FreeLand

+1

'list'變量與此有什麼關係?你沒有在代碼中使用它。 – Barmar

回答

3

你得到那個奇怪的符號,因爲'lecture', x是一個tuple。充當列表的數據類型,但是不靈活的列表。你不能輕易改變它們。您必須使用+運算符而不是逗號將這兩個值放入一個變量中。

將值放入列表中是通過append函數完成的。

list = [] 

def lecture(x): 
    for x in range(1,x): 
     y = 'lecture' + str(x) 
     list.append(y); 
lecture(5) 

還要注意: y = 'lecture' + str(x)str(x)是確保不同的數據類型(int和string)不衝突。因爲String + Int是不可能的。

  • 5(INT)+ 5(INT)是10
  • 5(字符串)+ 5(字符串)是55.
  • 但5(字符串)+ 5(INT)是錯誤的。
0

交換y = 'lecture', x有:

y = 'lecture ' + str(x) 

這將變量x追加到'lecture'並將其設置可變y

+0

'str(x)'而不是'x' – Zimm1

0

使用表達式y = 'lecture', x,您正在創建一個元組。創建一個空的列表,而是和與附加價值給它的循環:

def lecture(x): 
    lecture_list=[] 
    for item in range(1,x+1): 
     y='lecture '+str(item) 
     lecture_list.append(y) 
    return lecture_list 
0

的另一種方法:

class Lectures(object): 
    def __init__(self, x): 
     self.x = x 
    def __iter__(self): 
     for i in range(1, self.x): 
      yield "lecture" + i 

這裏可迭代類講座製成。

首先,你需要對它進行初始化,通過X作爲一個屬性:

lectures = Lectures(x) 

然後你可以使用它作爲一個迭代:

list_of_lectures = list(lectures) 

for lecture in lectures: 
    do_something