簡體   English   中英

在Python中切片和跳過

[英]Slicing and skipping in Python

編輯:我應該更清楚。 我真的很想跳過字符/字母,所以不僅要解決顯示第一個和最后一個字符的任務。 即使我現在可以做到。 [:: 5]似乎可以工作。

我試圖在python中切一個單詞,所以給了我第一個和最后一個字母。 根據我閱讀的所有內容,我的代碼應該是

word_ = "carrot"
letter = word_[0:6:4]
print(letter)

我理解它,因為前0是“ c”,6是“ t”,后4是要跳過的字符數。 答案給我“ co”。 我嘗試用我的代碼進行實驗,但是我只得到答案“ co”。 有人可以向我解釋我在做什么錯嗎? 我想要答案“ ct”

嘗試使用此命令打印首字母和尾字母:

print word[0] + word[-1]

或在python 3+中(如注釋中所述)

print(world[0] + word[-1])

最后一個參數(4)是一個步驟,即選擇了索引為0、4、8 ...的符號。

python通常會計算字符串中的元素,並從零到字符串長度列出。 因此,“ t”位於位置5,而不是6。您可以通過輸入負數來退后,這樣就可以得到字符串的第一個和最后一個字符。

word = "carrot"
first_letter = word[0]
last_letter = word[-1]
print(first_letter, last_letter)

希望能有所幫助。

包含空格以提高可讀性

word = "c a r r o t"
#       0 1 2 3 4 5
#         _
#           _
#             _
#               _
#                 _

第一個字符索引為0,最后一個索引為5。

因此,您將采取5個步驟,從第一個步驟開始到達最后一個步驟。 但是,如果要在切片中包括最后一個字符,則切片的stop參數必須在前面; 因為通常不包括止損指數。

所以你的分片是[0:6:5] -> [start:stop:step] 有更巧妙的方法來獲取第一個索引和最后一個索引。 [0][-1][::len(s)-1]但您可以從前者開始。


4不是要跳過多少個字符,而是到達您選擇的下一個字符所需的步驟數。 t將位於5而不是6

如果您確實需要在這種情況下使用slice

word_ = "carrdote"
letter = word_[::len(word_)-1]

編輯為評論:P

字符串的切片符號的等效while循環代碼為:

>>> def slice(s, start, end, step):
...     result = ""
...     i = start
...     while i < end:
...             result += s[i]
...             i += step
...     return result
... 
>>> word = "carrot"
>>> slice(word, 0, 6, 4)
'co'
>>> word = "strawberry"
>>> slice(word, 0, 6, 4)
'sw'
>>> slice(word, 0, 9, 4)
'swr'

暫無
暫無

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

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