2012-09-27 30 views
6

Tôi đang cố gắng tạo danh sách được điền bằng một chuỗi lặp lại và một số đánh dấu một hàng trong một hàng. Con số đánh dấu có bao nhiêu chuỗi sẽ được nhận từ một biến int.Tạo một danh sách Python được điền cùng một chuỗi lặp đi lặp lại và một số tăng lên dựa trên một biến.

Vì vậy, một cái gì đó như thế này:

b = 5 
a = range(2, b + 1) 
c = [] 
c.append('Adi_' + str(a)) 

Tôi đã hy vọng điều này sẽ tạo ra một danh sách như thế này:

c = ['Adi_2', 'Adi_3', 'Adi_4', 'Adi_5'] 

Thay vào đó tôi nhận được một danh sách như thế này

c = ['Adi_[2, 3, 4, 5]'] 

Vì vậy, khi Tôi cố gắng in nó trong hàng mới

for x in c: 
    print"Welcome {0}".format(x) 

Kết quả của việc này là:

Welcome Adi_[2, 3, 4, 5] 

Kết quả tôi muốn là:

Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5 

Nếu ai có ý tưởng tôi sẽ đánh giá cao nó.

+0

Bạn đã có chuỗi định dạng. Bạn nên thay đổi dòng in thành "Welcome Adi_" và định dạng số trực tiếp vào chuỗi. Bạn không phải lo lắng về việc sửa đổi các phần tử bên trong danh sách. – kreativitea

Trả lời

11

Bạn hầu như đã nhận nó:

for i in a: 
    c.append('Adi_' + str(i)) 

dòng ban đầu của bạn đã chuyển đổi toàn bộ danh sách a như là một chuỗi.

Lưu ý rằng bạn có thể thoát khỏi vòng lặp với một sự hiểu biết danh sách và một số string formatting:

c = ['Adi_%s' % s for s in a] 

hoặc

c = ['Adi_{0}'.format(s) for s in a] #Python >= 2.6 
+0

Vâng điều này đã làm cho tôi. Bây giờ tôi hiểu danh sách hình thành nhưng tôi không hiểu s. Tôi sẽ thay thế danh sách google: D. Cảm ơn bạn. – Adilicious

+1

@Adilicious Check http://docs.python.org/library/string.html#formatstrings và http://docs.python.org/library/stdtypes.html#string-formatting –

+0

Tôi sẽ cảm ơn bạn :) – Adilicious

0

Hoặc như một danh sách hiểu:

b = 5 
a = range(2, b + 1) 
c = ["Adi_" + str(i) for i in a] 
1

Sử dụng danh sách hiểu:

b = 5 
a = range(2, b + 1) 
c = ['Adi_'+str(i) for i in a] 
for x in c: 
    print"Welcome {0}".format(x) 
0

Hoặc trên cùng một dòng:

>>> for s in ['Welcome Adi_%d' % i for i in range(2,6)]: 
...  print s 
... 
Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5 
Các vấn đề liên quan