4 svar
103 visningar
Qetsiyah 6199 – Live-hjälpare
Postad: 1 sep 23:44 Redigerad: 1 sep 23:46

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?

Tigster 271
Postad: 1 sep 23:53 Redigerad: 1 sep 23:54

def myLen(someString: str):

       len = 0

       for x in someString:

              len += 1

       return len

Kanske? :)

Qetsiyah 6199 – Live-hjälpare
Postad: 2 sep 00:03 Redigerad: 2 sep 00:04

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?

Dracaena 5501 – Moderator
Postad: 2 sep 11:38

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")
CurtJ 550
Postad: 4 sep 20:46 Redigerad: 4 sep 20:48

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]
Svara Avbryt
Close