所以我有一個列表:如何「正確」打印清單?
['x', 3, 'b']
而且我所要的輸出是:
[x, 3, b]
我怎樣才能做到這一點在Python?
如果我做str(['x', 3, 'b'])
,我得到一個引號,但我不想引用。
所以我有一個列表:如何「正確」打印清單?
['x', 3, 'b']
而且我所要的輸出是:
[x, 3, b]
我怎樣才能做到這一點在Python?
如果我做str(['x', 3, 'b'])
,我得到一個引號,但我不想引用。
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
這是一個交互式會話,顯示@ TokenMacGuy的一行內的一些步驟。首先,他使用map
函數將列表中的每個項目轉換爲一個字符串(實際上,他正在創建一個新列表,而不是轉換舊列表中的項目)。然後他使用字符串方法join
將這些字符串與它們之間的', '
組合起來。其餘的只是字符串格式,這非常簡單。 (編輯:這個實例很簡單;字符串格式化通常可能有點複雜。)
請注意,使用join
是一種簡單高效的方法,可以從幾個子字符串中構建一個字符串,比通過連續添加字符串轉換爲字符串,這涉及很多在幕後複製。
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
而不是使用map
的,我建議你使用與join
能力的生成器表達式接受一個迭代器:
def get_nice_string(list_or_iterator):
return "[" + ", ".join(str(x) for x in list_or_iterator) + "]"
這裏,join
是String類str
的成員函數。它有一個參數:字符串的列表(或迭代器),然後返回一個新字符串,其中包含所有元素,在本例中爲,
。
對於Python 2來說一個很好的優化,因爲map在2.x中返回一個列表。它在3.x中返回一個生成器,所以它沒有那麼多幫助。 – 2011-03-27 00:02:00
我會返回''「,」.join(str(x)for x in list_or_iterator).join('[]')'' – eyquem 2011-03-27 12:23:06
@eyquem:聰明,我還沒有見過像以前那樣使用join。儘管如此,這對初學者來說更加不透明(因爲你使用的屬性是一個字符串是一個單字符字符串的可迭代容器)。 – 2011-03-27 13:10:58
可以使用其translate()
method與None
刪除字符串中的所有不想要的字符爲table
參數後跟包含要刪除的字符(縣)的字符串對於它的deletechars
的說法。
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
如果你使用一個版本的Python 2.6之前,你需要使用string
模塊的translate()
函數,而不是因爲能力通過None
作爲table
說法未添加到Python 2.6中。使用它看起來像這樣:
import string
print string.translate(str(lst), None, "'")
使用string.translate()
功能也將在2.6+工作,因此使用它可能是可取的。
這是簡單的代碼,所以如果你是新手,你應該很容易理解它。
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
它打印所有不帶引號,就像你想要的。
只使用打印:
>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
使用.format
字符串格式化,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
輸出:
[x, 3, b]
說明:
map
用於該列表中的每個元素映射到string
類型。,
作爲分隔符。[
和]
來顯示列表大括號。
謝謝你的偉大工程。你能詳細解釋一下你在第二行做什麼?我是python的新手。 – Obaid 2011-03-26 23:12:41
他正在使用'map'函數爲'mylist'的每個元素調用'str',創建一個新的字符串列表,然後用'str.join'加入到一個字符串中。然後,他使用'%'字符串格式化運算符替換'「[%s]」'中的字符串而不是'%s'。 – 2011-03-26 23:54:46
另一種可能更現代的方法是: '「[{0}]」。format(「,」.join(str(i)for i in mylist))' – 2013-09-11 13:25:07