3

len()関数や文字列メソッドを使用せずに文字列の長さを取得する方法を教えてください。私は答えを求めて狂ったように頭を叩いているので、誰か教えてください。
ありがとうございました。

4

17 に答える 17

21
>>> sum(map(lambda x:1, "hello world"))
11

>>> sum(1 for x in "foobar")
6

>>> from itertools import count
>>> zip(count(1), "baz")[-1][0]
3

「早口言葉」

>>> sum(not out not in out for out in "shake it all about")
18

いくつかの再帰的な解決策

>>> def get_string_length(s):
...     return 1 + get_string_length(s[1:]) if s else 0
... 
>>> get_string_length("hello world")
11
>>> def get_string_length_gen(s):
...     yield 1 + next(get_string_length_gen(s[1:])) if s else 0
... 
>>> next(get_string_length_gen("hello world"))
11
>>> 
于 2010-10-21T21:59:02.833 に答える
8

O(1) メソッドは次のとおりです。

def strlen(s):
    if s == "": return 0
    return s.rindex(s[-1]) + 1

言い換えれば、文字を数えることによっては機能しないので、1バイトの文字列の場合と同じように1GBの文字列でも同じくらい高速になるはずです。

最後の文字を見て、最後から検索してその文字を見つけることで機能します。これは最後の文字であるため、常に最初に検索され、基本的に常に最後の文字のインデックスが返されます。長さは、最後の文字のインデックスより 1 だけ長くなります。

于 2010-10-22T02:22:18.347 に答える
5

len 関数を避ける必要がある理由はわかりませんが、文字列はイテラブルです。これを行うことができるはずです:

strlen = 0

for c in myString:
  strlen += 1
于 2010-10-21T21:38:27.203 に答える
2

変な質問なので変な答えです!

try:
  for i in itertools.count(): mystring[i]
except IndexError:
  pass
于 2010-10-21T22:02:32.400 に答える
2
>>> import re
>>> s
'mylongstring'
>>> re.subn(".","1",s)[-1]
12
>>>

文字列に改行が含まれる場合

>>> s="mys\ntring\n"
>>> re.compile(".",re.DOTALL).subn("",s)[-1]
10
于 2010-10-22T00:24:42.683 に答える
2

文字列からファイルのようなオブジェクトを作成し、オブジェクト全体を読み取り、オフセットを伝えます。

>>> import StringIO
>>> ss = StringIO.StringIO("ABCDEFGHIJ")
>>> ss.read()
'ABCDEFGHIJ'
>>> ss.tell()
10
于 2010-10-22T02:49:05.770 に答える
1

簡単:

length=0
for x in "This is a string":
    length+=1
print(length)
于 2010-10-21T21:39:33.737 に答える
0
def length(object):#Define the length calculation function

    count = 0  #initializing the length to be equal to zero
    object = input() #enter the argument 

    for i in object:
        count=count+1

    print("Length of the string is"+str(count))

length(object)
于 2016-07-15T00:43:21.690 に答える
0

あまり効率的ではありませんが、非常に簡潔です。

def string_length(s):    
    if s == '': return 0
    return 1 + string_length(s[1:])
于 2010-10-22T02:14:38.460 に答える
0

文字列内の空の文字列の出現回数をカウントすることで、これを行う方法を次に示します。

def strlen(s):
    return s.count('') - 1

は 1 を返すため"".count("")、文字列の長さを取得するには 1 を引く必要があります。

于 2010-10-22T02:29:11.310 に答える
-1
a = 'malayalam'
length = 0
for i in a:
    if i == "":
        break
    else:
        length+=1

print length

このコードは、""(文字列の末尾) までカウントすることにより、文字列の長さを検証します。文字列が末尾に達すると、ループが中断され、文字列の最終的な長さが返されます。

于 2015-08-14T14:26:41.987 に答える