亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據數字列表檢查字母

根據數字列表檢查字母

慕的地6264312 2022-06-22 17:35:37
我有一個字符串p = "asfdasdf"和一個像a = [1,3,6]我想檢查字符串中的字母,列表中的數字表示。我的意思是,'sd d' (2rd, 4th, 7th)我試過這個print(p[a])但是失敗了。我應該怎么辦?另外,我想知道我該怎么做打?。╬[1,3,6])這在python中可能嗎?它在 R 中運行良好,但在 Python 中運行良好。
查看完整描述

4 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

a是 a list,如果你想訪問list/的任何項目,string那么你需要一個索引,你喂什么是 alist所以它不會接受這樣的。


p = "asfdasdf"

a = [1,3,6]

output = []

for i in a:

    output.append(p[i])

print(' '.join(output))


查看完整回答
反對 回復 2022-06-22
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我不完全確定我理解你的問題,但也許你正在尋找這樣的東西:


print([p[x] for x in a])

--> ['s', 'd', 'd']

p這會在使用 in 的索引值時創建字符的列表理解,a并將其打印在同一行中。


如果你想要它作為一個字符串:


print(' '.join([p[x] for x in a]))

--> s d d 

還請記住一點:代碼的整體時間復雜度不是行數的函數。換句話說,行數更少并不意味著代碼更高效(而對于 Python,通過嘗試使其更緊湊來降低代碼效率很容易)。


查看完整回答
反對 回復 2022-06-22
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

你print(p[a])不是 Python 中的有效語句。如果您能夠用任何其他語言做同樣的事情,那是因為該語言的特殊功能。在 Python 中,我們也有一些特別的東西。我們稱它們為list-comprehensions。


首先讓我們學習,如何從您的字符串中獲取字符串字符p。


>>> p = "asfdasdf"

>>> p

'asfdasdf'

>>> a = [1,3,6]

>>> p[a[1]]

's'

>>> p[a[3]]

'd'

>>> p[a[6]]

'd'

現在下一步如果要構造一個字符串這個值列表(['s', 'd', 'd'])。之后構建一個帶有分隔符的字符串作為空格()。下面是你平時的做法


my_list = []


for a_i in a:

    my_list.append(p[a_i])

    my_list.append(" ") # adding spaces


# At the end of this above loop, my_list look like ['s', ' ', 'd', ' ', 'd', ' ']



str_out = ""

# now my_list[:-1], look like ['s', ' ', 'd', ' ', 'd'] # exclude last value

for each in my_list[:-1]:

    str_out = str_out + each


print(str_out)

# print `s d d`

列表理解


現在,讓我們使用一個列表推導來生成這個 list( [p[each] for each in a]) 并將這個輸出直接傳遞給一個內置函數。join將負責在 list( ['s', ' ', 'd', ' ', 'd']) 中的字符串變量之間添加空格,然后將它們組合成s d d


>>> ' '.join([p[each] for each in a])

's d d'

>>>

隨著人們習慣了 python,這些變得非常方便。也少有顯著優勢

  • 易于閱讀

  • 更小的代碼 => 更少的編譯時間,更少的維護,更少的錯誤機會

  • 更少的臨時變量


查看完整回答
反對 回復 2022-06-22
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您的代碼是錯誤的,因為如果計算機讀取,它將變為


p[[1, 3, 6]]

這是非法的,在 Python 中不可用,但你可以使用 for 語句!你需要使用:


使用for語句


p = "asfdasdf"

a = [1, 3, 6]


for x in a:

 print(p[x], end='')

print('')

但這是一種愚蠢的方式,所以不要使用for語句,而是使用列表推導


p = "asfdasdf"

a = [1, 3, 6]

print(''.join(p[x] for x in a))


查看完整回答
反對 回復 2022-06-22
  • 4 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號