如何访问字符串列表中的字符?有无非循环直接访问方法?
哈哈,你提的问题其实很典型,很多刚接触Python列表和字符串嵌套的同学都会踩这个小坑~
一、访问单个字符串的指定字符
你以为的L[2][1]其实是完全正确的写法!可能是你测试时的列表结构和预期不符?举个实际例子:
假设我们有这样一个字符串列表:
L = ['hello', 'world', 'apple']
这里第三个字符串是'apple'(Python里索引从0开始,所以L[2]对应列表的第三个元素),它的第二个字符是'p',用L[2][1]就能直接取到。如果你的目标是获取'a',那只要你的第三个字符串的第二个位置(索引1)是'a'就行,比如定义列表为L = ['test1', 'test2', 'aabc'],那L[2][1]就会返回'a',完全符合你的需求。
二、提取每个字符串的前两个字符生成新列表
你写的L[:][:2]之所以不对,是因为L[:]是把整个列表完整复制了一份,后续的[:2]是取这个复制列表的前两个元素(也就是前两个字符串),而不是每个字符串的前两个字符。
如果想要避免显式的for循环写法,最简洁且易读的方式是用列表推导式——这是Python里处理这类批量操作的经典技巧:
L = ['hello', 'world', 'apple', 'python'] new_list = [s[:2] for s in L] # 最终结果:['he', 'wo', 'ap', 'py']
要是你一定要完全避开循环相关的语法(包括列表推导式),也可以用map函数配合匿名函数实现:
new_list = list(map(lambda s: s[:2], L))
不过通常来说,列表推导式的可读性比map+lambda更好,更推荐日常使用前者。
内容的提问来源于stack exchange,提问作者susopeiz
相关产品推荐
相关产品推荐

