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

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

如何僅在特定索引處加入字符串列表

如何僅在特定索引處加入字符串列表

躍然一笑 2022-07-12 15:24:28
我試圖僅在 Python 中的特定索引處將字符串列表中的特定字符串連接在一起。想象一下你有清單['foo', 'bar', 'baz', 'qux', 'quux']我想最終得到以下列表:['foo', 'bar baz', 'qux', 'quux']鑒于字符串列表包含字符串baz。解決此問題的最有效方法是什么?
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

index = 2

ss = ['foo','bar','far','car','sar']

ss[index] = ' '.join(ss[index:index+2])

ss.pop(index+1)

print(ss)

我希望這可行,因為它不需要創建新列表


查看完整回答
反對 回復 2022-07-12
?
慕田峪7331174

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

i = 0

while i < len(s):

    print(s[i])

    if s[i] == 'baz' and i != 0:

        s[i - 1] += ' '

        s[i - 1] += ''.join(s[i])

        s.pop(i)

        i = i - 1

    i = i + 1

上面的代碼遍歷列表,在找到 'baz' 的地方,它將 'baz' 連接到前面的元素。這無法使用 for 循環、 byfor i in s或來實現for i in range(len(s))。在代碼中,由于 s.pop() 導致 len(s) 發生變化,因此i = i - 1是必要的,但for i in range(len(s))不允許更改 i 的值,因為它固定為從 0 變為 len(s)。對于為什么不使用 for 循環有任何疑問,請考慮以下代碼:-


for i in range(len(s)):

    print(s[i])

    if s[i] == 'baz':

        s.pop(i)

    i = i - 1

這輸出


foo

bar

baz

quux

---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-223-8034ffc6ca03> in <module>()

      1 for i in range(len(s)):

----> 2     print(s[i])

      3     if s[i] == 'baz':

      4         s.pop(i)

      5     i = i - 1


IndexError: list index out of range

可以看出,它并沒有遍歷所有元素。由于 s.pop(),len(s) 減少到 4,s[3] 變成了 'quux',而不是 'qux'。盡管 i 存在i - 1,但它會引發錯誤。因此,while循環解決了這個問題。


查看完整回答
反對 回復 2022-07-12
?
神不在的星期二

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

你可以試試這個:


>>> l = ['foo', 'bar', 'baz', 'qux', 'quux']

>>> index = 2

>>> l[index - 1] = f'{l[index-1]} {l.pop(index)}'

>>> l

['foo', 'bar baz', 'qux', 'quux']

定時:


382 ns ± 0.455 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)


查看完整回答
反對 回復 2022-07-12
  • 3 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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