2016-03-18 17 views
0

Bunu bir modül içe aktarmadan yapmanın basit bir yolu olması gerektiğini biliyorum ancak bulamıyorum.Biçim listesi içindeki öğelerin sayısına bağlı olarak

Listemde kaç tane öğe var olursa olsun aynı biçimi saklayabilmek istiyorum. Yani, listemdeki her öğe için başka bir tane daha ekleyeceğiz: {:^3}.

list = [1, 2, 3, 4, 5] 

print("| {:^3}{:^3}{:^3}{:^3}{:^3}\n".format(*list)) 

Bunu yapmanın en kolay yolu nedir?

+0

'+"". Katılabilir ("{:^3}" listesinde _ için) .format (* liste) belki? – Pythonista

cevap

3

Bunu yapmanın en kolay yolu, bir dizideki her öğeye bir şeyler yapan ve sonra dizinin dize olarak temsil edilen bir liste kavrama ile birlikte bir "".join işlevini kullanmaktır. x akım öğedir

>>> print("| " + "".join(["{:^3}".format(x) for x in list]) + "\n") 
| 1 2 3 4 5 

Bu list her öğeye "{:^3}".format(x) geçerlidir. Daha sonra, örneğin hiçbir sınırlayıcı bir dize olarak liste öğeleri almak için bu konuda "".join kullanır:

>>> "".join(["1", "2", "3"]) 
'123' 

Bir diğer not: yerleşik bir işlevdir listlist çünkü adlı bir değişken kullanarak olmamalıdır Python'da.

+0

Örneğiniz yanlış. Hiçbir şeye katlanamazsın ama dizeler. Eğer "" ".join ([1, 2, 3])' yaparsanız, 'TypeError: dizi öğesi 0: beklenen dize, int' – zondo

+0

@zondo Hata! Teşekkürler. –

+0

'.join()' işlevini kullanırken, liste kavraması bir jeneratörden daha verimlidir. – zondo

0

Python join fonksiyon özellikle bu gibi şeyler için son derece yararlıdır: "| "

("| "+"".join(["{:^3}" for _ in list]) + "\n").format(*list)

İlgili konular