例如,我有字符串s1 = "lets go to the mall"
和第二串s2 = "hello"
如何操縱一個字符串等於另一個字符串的長度?
在Python,如何可以操縱s2
串等於的s1
長度。
s2
那麼會是什麼樣子:
s2 = "hellohellohellohell"
這將具有相同的字符數爲s1
。
例如,我有字符串s1 = "lets go to the mall"
和第二串s2 = "hello"
如何操縱一個字符串等於另一個字符串的長度?
在Python,如何可以操縱s2
串等於的s1
長度。
s2
那麼會是什麼樣子:
s2 = "hellohellohellohell"
這將具有相同的字符數爲s1
。
//
是發現整個倍數的整數除法。 %
是模(餘)
乘s2
我就可以進入s1
然後用切片添加的s2
剩餘部分的次數。
s3 = s2 * (len(s1) // len(s2)) + s2[:(len(s1) % len(s2))]
>>> s3
'hellohellohellohell'
下面是一個方法:
s1 = 'lets go to the mall'
s2 = 'hello'
s2 = ''.join(s2[i % len(s2)] for i in range(len(s1)))
print(s2) # "hellohellohellohell"
編輯:這是對於那些不熟悉Python或編程的解釋=]
''.join(...)
需要一個迭代,這是可以遍歷的東西,並將所有這些元素與空白字符串一起加入吐溫。所以,如果裏面的內容是一個可迭代的的字母,它會將所有這些字母連接在一起。range(len(s1))
產生可迭代的所有數字0
至len(s1) - 1
。此迭代中的數字數量等於s1
的長度。s2[i]
表示索引號爲i
的字符串s2
中的字母。所以,如果s2 = 'hello'
,然後s2[0] = 'h'
,s2[1] = 'e'
等i % len(s2)
意味着i
模len(s2)
,或剩餘當您的s2
長度劃分i
。s2
多次的字母,以便獲得多個字母,然後將它們連同它們之間的空字符串一起加入。(s2 * (len(s1)//len(s2) + 1))[:len(s1)]
基本上乘以兩個長度的math.floor
分,然後添加字符串的其餘s2
:
def extend(s1, s2):
return s2*int(math.floor(len(s1)/len(s2)))+s2[:len(s1) % len(s2)]
>>> extend("lets go to the mall", "hello")
'hellohellohellohell'
>>>
了我的頭頂部,你必須原諒我,你可以使用這樣的功能:
def string_until_whenever(s1, s2):
i = len(s1)
x = 0
newstring = ""
while i != 0:
newstring = newstring + s2[x]
x += 1
i -= 1
if x == len(s2) - 1:
x = 0
return newstring
效率低下,但很簡單。 (乘法使得字符串比需要的長得多。)
n = len(s1)
s3 = (s2*n)[:n]
我認爲有很多可能的解決方案。我的答案是:
s2 = s2*(len(s1)/len(s2)+1)
s2 = s2[0:len(s1)]
未必是最乾淨的解決方案,但你也可以做到這一點,利用串乘法和字符串切片:
def string_until_whenever(s1, s2):
temp = ""
if len(s2) > len(s1):
temp = s2
s2 = s1
s1 = temp
new_string = ""
multiply_by = len(s1)/len(s2)
modulo = len(s1) % len(s2)
new_string = s2 * multiply_by
new_string = new_string + s2[0:modulo]
return new_string
print(string_until_whenever("lets go to the mall", "hello"))
#Outputs: hellohellohellohell
查看字符串乘法和切片。 – Carcigenicate
python字符串是不可變的,所以你將不能在原地更改's2'。但是,您可以創建一個長度等於's1'的新字符串。 – Wajahat