[英]How to print a string in a list and its index on the same line?
這可能有一個非常簡單的解決方案,但我只是一個初學者。
我有的是:
def content(L):
for i in range(len(L)):
print (i), (L[i])
現在它只打印索引而不是字符串。 我不完全確定問題是什么,但是當我在最后一行中切換排序以便(L [i])首先出現時,它會打印字符串而不是索引。 我想在同一行上打印。
在Python 3.x中, print
是一個函數。 因此,您必須將這兩個值作為參數傳遞
print (i, L[i])
當你說
print (i), (L[i])
Python 3.x,接受i
作為print
參數並將(L[i])
視為單獨的表達式並對其進行求值,但這不會傳遞給print
函數。 這就是為什么總是要打印第一個元素。
除此之外,您的整個語句將被評估為以下元組
(None, L[i])
要理解這一點,請在Python REPL中嘗試這樣的事情
>>> print (1), (2)
1
(None, 2)
當內部print
1
執行時,它將返回None
,下一個元素是2
。 在Python中,當你用逗號分隔兩個用逗號分隔的表達式時,它們將成為一個元組。
您可以使用Python生成的字節碼來確認相同的內容,如下所示
from dis import dis
code1 = compile("print (1), (2)", "<string>", "exec")
dis(code1)
產量
1 0 LOAD_NAME 0 (print)
3 LOAD_CONST 0 (1)
6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
9 LOAD_CONST 1 (2)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 2 (None)
19 RETURN_VALUE
BUILD_TUPLE
對應於元組結構,因為我們不使用它,它會立即被丟棄。
def content(L):
for ind, val in enumerate(L):
print (ind, val)
正如其他人所說, print
現在是一個函數,所以python正在做的是將行: print(i), (L[i])
為元組。 請改為print(i, L[i])
。
您還需要使用枚舉:
for i,line in enumerate(L):
print(i, line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.