能否无需存储子串或使用列表,直接获取字符串按空格分割的首个子串?
无需列表获取空格分割后的首个子串:可行!
当然可行!而且有几种简洁的方法可以实现,完全不用把整个字符串分割成列表或者额外存储到其他变量里,适配任意字符串场景~
方法1:str.split()限制分割次数(无额外变量存储)
虽然用到了split,但我们只执行一次分割,并且直接提取首个元素,不把生成的列表存到任何变量里,完全满足你的要求:
random_string = "fox is bright orange" print(random_string.split(maxsplit=1)[0]) # 输出 'fox'
- 适配场景:不管字符串有没有空格都能用——如果没有空格,
split(maxsplit=1)会返回只包含原字符串的列表,取索引0就是整个字符串; - 优点:代码简洁,可读性强,很符合Python的风格。
方法2:str.find()+切片(完全不生成列表)
如果严格要求“完全不使用列表”,可以用这个方案,通过定位第一个空格的位置来切片:
random_string = "fox is bright orange" print(random_string[:random_string.find(' ')] if ' ' in random_string else random_string)
- 原理:
find(' ')返回第一个空格的索引,找不到则返回-1;我们通过条件判断来决定是切片到空格位置,还是返回整个字符串; - 优点:完全绕开了列表操作,底层是字符串的索引定位,对于超长字符串来说性能会略优一些。
两种方法都能完美适配任意字符串,你可以根据自己的偏好选择~
内容的提问来源于stack exchange,提问作者exemplarary
相关产品推荐
相关产品推荐

