簡體   English   中英

在Python中切割字符串時,如何使用變量作為索引?

[英]How do you use a variable as an index when slicing strings in Python?

我一直在嘗試使用循環從字符串中切出兩個字符,但不是抓取兩個字符,而是只抓取一個字符。

我試過了:

input[i:i+1]

input[i:(i+1)]

但似乎都不起作用。

如何使用變量進行切片?

完整的例程:

def StringTo2ByteList(input):
    # converts data string to a byte list, written for ascii input only
    rlist = []
    for i in range(0, len(input), 2):
        rlist.append(input[i:(i+1)])
    return rlist

切片值不是切片的開始和結束的人物 ,他們的起點和終點 如果你想切兩個元素,那么你的止損必須比你的開始大2

input[i:i+2]

記住切片索引的一種好方法是將數字視為標記元素之間位置的標記。

切片示例

因此,例如切片ba你會使用fruit[0:2] 當以這種方式思考時,事情看起來不再直觀,並且您可以輕松避免在代碼中出現一個錯誤。

當我們進行從左到右的迭代時,基於中間位置的推理起作用:

li = [10, 20, 55, 65, 75, 120, 1000]
print 'forward slicing li[2:5]    ->',li[2:5]
# prints forward slicing li[2:5]    -> [55, 65, 75] 

因為pos 2在20/55之間,pos 5在75/120之間

但是當我們進行從右向左迭代時它不起作用:

li = [10, 20, 55, 65, 75, 120, 1000]
print li
print 'reverse slicing li[5:2:-1] ->',li[5:2:-1]
# prints reverse slicing li[5:2:-1] -> [120, 75, 65]

我們必須將李[5:2:-1]視為:
從元素li [5] (即120) 到未包含的元素li [2] (55)
也就是說
來自元素li [5] (即120) 僅包含li [3] (其為65)。

從最后開始會產生危險的反向切片:

li = [10, 20, 55, 65, 75, 120, 1000]
print li[ -1 : 2  : -1 ]
# prints [1000, 120, 75, 65] not [120, 75, 65, 55]
# the same as:
print li[  None : 2 : -1 ]
# prints [1000, 120, 75, 65]
print li[       : 2 : -1 ]
# prints [1000, 120, 75, 65]

li = [10, 20, 55, 65, 75, 120, 1000]
print li[ 4 : 0 : -1]
# prints [75, 65, 55, 20] , not [65, 55, 20, 10]

如果難以這樣思考,防止錯誤的方法就是寫

print list(reversed(li[2:5]))
# prints [75, 65, 55]
print list(reversed(li[2:-1]))
# prints [120, 75, 65, 55]
print list(reversed(li[0:4]))
# prints [65, 55, 20, 10]

請注意,就第一個元素INCLUDED而言,獲得反向切片的唯一方法是

print li[ 4 :      : -1]

這代表

print li[ 4 : None : -1]

暫無
暫無

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

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