我想列印一個句子中所有大寫字符的位置,但我不知道為什么,如果同一個字母在同一個句子中多次大寫,這個回圈會一直列印出第一個位置。
在這句話中,大寫字母“H”出現了兩次,我希望列印以下索引:
0 7 12 16
但相反,我列印0 7 12 0
sentence= 'Have a Nice Day Hey'
for i in sentence:
if i.isupper():
print(sentence.index(i),i)
uj5u.com熱心網友回復:
這是一種更 Pythonic 的方式來執行正確輸出的相同操作:
sentence= 'Have a Nice Day Hey'
for index, letter in enumerate(sentence):
if letter.isupper():
print(index, letter)
查看Python Docs中的 enumerate 函式
uj5u.com熱心網友回復:
Usingstr.index()回傳字符的第一次出現,因此對于您的示例sentence.index('H')將始終回傳0。
更多資訊在這里:https ://docs.python.org/3/library/stdtypes.html#common-sequence-operations
s.index(x[, i[, j]]) - index of the first occurrence of x in s
(at or after index i and before index j)
您想要的是使用計數器(或)遍歷串列enumerate并將計數器用于您的輸出:
sentence= 'Have a Nice Day Hey'
c = 0
for i in sentence:
if i.isupper():
print(c)
c = 1
uj5u.com熱心網友回復:
sentence.index(i)總是在句子中首先出現字母。嘗試使用索引,同時回圈:
for i in range(len(sentence)):
if sentence[i].isupper():
print(i, sentence[i])
uj5u.com熱心網友回復:
用于enumerate訪問專案和索引,以及串列理解。這比遍歷每個字符的字串,然后再次遍歷字串以找到該字符的索引更容易和更快。
sentence = 'Have a Nice Day Hey'
upper_idxs = [i for i, c in enumerate(sentence) if c.isupper()]
print(upper_idxs)
# [0, 7, 12, 16]
uj5u.com熱心網友回復:
好的,所以:
sentence= 'Have a Nice Day Hey'
您需要將有關您獲得第一個大寫字母的資訊存盤在某處。讓我們使用一張桌子
ifoundx = []
for i in sentence:
if i.isupper() and i not in ifoundx :
print(index, letter)
ifoundx.append(i)
它應該作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495158.html
上一篇:將空值和非空值分別填充為0和1,僅填充到pyspark資料框中的選定列
下一篇:洗掉R上的空行
