没有len函数的字符串长度

时间:2010-10-21 21:37:12

标签: python string-length

任何人都可以告诉我如何在不使用len()函数或任何字符串方法的情况下获取字符串的长度。请有人告诉我,因为我疯狂地试着回答 谢谢。

16 个答案:

答案 0 :(得分:20)

>>> 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
>>> 

答案 1 :(得分:6)

这是一个O(1)方法:

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

换句话说,它不能通过计算字符来起作用,因此对于1GB字符串应该和1字节字符串一样快。

通过查看最后一个字符并从最末端搜索来找到该字符。因为它是最后一个字符,它总是在它看起来的第一个地方找到它,基本上总是返回最后一个字符的索引。长度只比最后一个字符的索引多一个。

答案 2 :(得分:4)

为什么你需要避免len函数超出我的范围,但字符串是可迭代的。你应该能够做到这一点:

strlen = 0

for c in myString:
  strlen += 1

答案 3 :(得分:2)

我是python的新手,但我会说你可以用for循环获取字符串的长度,例如而不是:

> string=input("Enter a string")
> print(len(string))

执行此操作:

>string=input("Enter a string")
>a=0
>for letter in string:
>a=a+1
>print(a)

答案 4 :(得分:1)

易:

length=0
for x in "This is a string":
    length+=1
print(length)

答案 5 :(得分:1)

这是一个奇怪的问题所以这是一个奇怪的答案!

try:
  for i in itertools.count(): mystring[i]
except IndexError:
  pass

答案 6 :(得分:1)

>>> import re
>>> s
'mylongstring'
>>> re.subn(".","1",s)[-1]
12
>>>

如果字符串包含新行

>>> s="mys\ntring\n"
>>> re.compile(".",re.DOTALL).subn("",s)[-1]
10

答案 7 :(得分:1)

从字符串中创建一个类文件对象,读取整个对象,然后告诉你的偏移量:

>>> import StringIO
>>> ss = StringIO.StringIO("ABCDEFGHIJ")
>>> ss.read()
'ABCDEFGHIJ'
>>> ss.tell()
10

答案 8 :(得分:1)

这是一种既不使用len也不使用迭代的方法:

>>> a = 'a' * 200000
>>> a.rindex(a[-1]) + 1
200000

要使其适用于没有rindex的列表,请使用:

>>> a = list(range(200000))
>>> a.index(a[-1], -1) + 1
200000

答案 9 :(得分:0)

效率不高但非常简洁:

def string_length(s):    
    if s == '': return 0
    return 1 + string_length(s[1:])

答案 10 :(得分:0)

这是通过计算字符串中空字符串的出现次数来实现的:

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

由于"".count("")返回1,您必须减去1才能得到字符串的长度。

答案 11 :(得分: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)

答案 12 :(得分:0)

使用while循环

a = 'string'
count = 0

while True:
    try:
        if a[count]:
            count += 1
    except IndexError as e:
        break

print(count)

答案 13 :(得分:0)

在python中不使用len函数的字符串长度-

def strlen(myStr):
    if(myStr==""):
       return 0
    else:
       return 1+strlen(myStr[1:])

答案 14 :(得分:-1)

a = 'malayalam'
length = 0
for i in a:
    if i == "":
        break
    else:
        length+=1

print length

此代码通过计数直到“”(字符串的结尾)来验证字符串的长度。如果字符串到达​​结尾,则循环中断并返回字符串的最终长度。

答案 15 :(得分:-2)

创建一个for循环

styx =“如何在不使用镜头功能的情况下进行计数” 数字= 0 对于在触笔中的c: 数字= 0 + 1 打印(数字)