簡體   English   中英

如何在列表中打印字符串及其索引在同一行?

[英]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不是Python 2.x中的語句,而是一個函數。 你可以像這樣使用它:

print(i, L[i])

此外, enumerate非常適合您要做的事情:

for i, c in enumerate(L):
    print(i, c)

請注意,如果從__future__包中導入,則可以在Python 2中使用print作為Python 3.x樣式的函數(對於Python 2.6及更高版本):

from __future__ import print_function

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM