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