Ta reda på längd av sträng utan len()
Hej, jag har fått en (enligt mig) lite konstig uppgift, nämligen att ta reda på längd av sträng utan len(), det här är det enklaste sättet jag kan komma på, finns det andra elegantare sätt?
def myLen(someString: str):
len = 0
for x in someString:
len += 1
return len
Kanske? :)
Jaha ojdå vad jag övertänkte! Tack
Men en fråga, finns det någon typ mindre resurskrävande operation istället för att assigna till dummy för att testa om jag är utanför längden av strängen i min kod ovan?
Har har du ett par förslag, vissa lite mer överkurs än andra.
print(sum(map(lambda x:1, "1234567")))
Sedan kan man också göra det rekursivt:
def get_string_length(s):
return 1 + get_string_length(s[1:]) if s else 0
och liknande den första där vi använda lambda så kan vi göra det utan,
sum(1 for x in "aWord")
Din tilldelning är inte så resurskrävande men du kan göra den lite mer effektiv genom att tilldela en lokal variabel i stället för din dummy. Det är ju själva tilldelningen som är poängen.
Dracaenas förslag är ju lysande, speciellt det sista så det finns egentligen inget att tillägga men under avdelningen "Skruvade sätt att räkna bokstäver" bidrar jag med följande för att ytterligare visa att det finns många sätt att lösa en uppgift.
import re
def skruvat_sätt_att_räkna_tecken():
x = re.search(r".*", s)
return x.span()[1]