簡體   English   中英

遍歷列表並打印字符串的那些元素

[英]Looping over a list and printing those elements of a string

因此,我需要創建一個對整數列表進行迭代的函數,並以這些整數作為索引來打印字符串的字符。 像這樣:

printString('123456789',[1,7,5,3])
2
8
6
4

我有這個:

def printString(s,list):
    i=0
    resultString=str()
    for i in range(len(list)):
        resultString= s[list[i]]
        i=i+1
    print (resultString)

但是它只打印字符串的第一個字符,我想for循環有問題,我只是找不到它是什么。

任何幫助將是有用的! 謝謝

結果如下:

printString('123456789',[1,7,5,3])
2
8
6
4

可以以多種方式實現,這就是我要做的。

def printString(input, indexArr):
  for i in indexArr:
    print(input[i])

printString('123456789',[1,7,5,3])

現場演示

移動print(resultString) ,使其位於循環內。

def printString(s,list):
    i=0
    resultString=str()
    for i in range(len(list)):
        resultString= s[list[i]]
        i=i+1
        print (resultString)

其他但非必要的建議:

您不需要i=0i=i+1 ,因為for循環已經為您創建和增加了值。

def printString(s,list):
    resultString=str()
    for i in range(len(list)):
        resultString= s[list[i]]
        print (resultString)

您不需要resultString=str()因為Python非常樂意在函數中間創建一個新變量,而沒有任何暗示其類型的提示。

def printString(s,list):
    for i in range(len(list)):
        resultString= s[list[i]]
        print (resultString)

您根本不需要resultString ,因為您只使用過一次它的值。

def printString(s,list):
    for i in range(len(list)):
        print (s[list[i]])

如果您對索引沒有特定的需求,則最好遍歷列表的元素而不是索引。

def printString(s,list):
    for idx in list:
        print (s[idx])

盡量不要使用與內置類型名稱相同的變量名稱。

def printString(s,seq):
    for idx in seq:
        print (s[idx])

這是因為您沒有將所有結果附加到字符串中,這將為您提供答案: 2864

def printString(s,list):
    i=0
    resultString=str()
    for i in range(len(list)):
        resultString+=s[list[i]]
        i=i+1
    print (resultString)

printString('123456789',[1,7,5,3])

這里有幾個問題。 首先, print語句應在循環內縮進。 其次,即使這里無害,您也不應自己操縱i ,而應使用for循環為您完成操作。 最后, list是變量的可怕名稱,因為它隱藏了python的內置列表。 將所有內容放在一起,您將得到以下內容:

def printString(s, lst):
    for i in range(len(lst)):
        resultString = s[lst[i]]
        print (resultString)

給定您的args作為測試用例:

#!/usr/bin/python

def printString(strng, indexes):
    return ''.join((c for i,c in enumerate(strng) if i in indexes))

這使用了enumerate()和一個生成器。

您只需要將print語句放入for循環中即可。 它僅打印最后一個元素,因為每次都會覆蓋它。 您也可以簡單地

def printString(s,list):
resultString=str()
for i in range(len(list)):
    resultString= s[list[i]]
    print (resultString)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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