[问题] string in list 抓出每个字串的前n个char

楼主: qoo33456 (巷口凉面摊)   2021-09-04 22:03:24
最简单的想法是
test_string_lst = ['abct', 'dccd', 'aefgg']
for string in test_string_lst:
print(string[:2])
这样可以取出每个字串的前n个字符,但需要iterate list内所有字串。
有没有能够一次输出前n个字符的方式?
有看到个类似的方法
test_string_lst = ['abct', 'dccd', 'aefgg']
for c in zip(*test_string_lst):
print(c)
这样可以把所有string的字符按照顺序输出。
但有两个问题
1.会受限于最短字串长度
2.好像不能让它输出前n个
作者: ckc1ark (伪物)   2021-09-04 22:13:00
这两个输出就不一样了 要不要先确定一下output format
作者: sherees (ShaunTheSheep)   2021-09-04 23:23:00
1. itertools.zip_longest2. enumerate+break
作者: Kitten1156 (Frank_kitten)   2021-09-04 23:24:00
import numpy as npa = ["abcde","fgh","ijklm","nop","qrstiuv","wxyz"]b = np.chararray(a)np.char.ljust(b,4)#array(['abcd', 'fgh ', 'ijkl', 'nop ', 'qrst', 'wxyz'], dtype='<U4')b那行写错了..是array再送两句d = np.char.strip(c) #去空白e = d.tolist() #转回list
作者: s0914714 (YA)   2021-09-04 23:51:00
不是用slice就好?
作者: art1 (人,原来不是人)   2021-09-05 08:55:00
from functools import partialimport rege = map(partial(re.match, '.{2}'), your_list)next(ge)[0] 就是你要的前几个字,不过只适用于较短的字串只是切分字串用到正规表达式感觉有点过头...
作者: s0914714 (YA)   2021-09-05 09:31:00
你不iterate整个list怎么有办法抓出每个item的前两位?
作者: LP9527 (ㄊㄇ抽菸都去)   2021-09-05 18:25:00
为啥不给马儿吃草
作者: lycantrope (阿宽)   2021-09-05 22:43:00
不iter只好recursive了吗 w
作者: sating00 (sating00)   2021-09-06 00:53:00
很好奇有什么东西可以不跑循环就全部完成
作者: ddavid (谎言接线生)   2021-09-06 16:16:00
可能要一开始资料结构就特殊设计了,把工做在insert那边虽然我这么说,但还是没想到真的就有比较好的方式而且他还要求依输入序输出这点麻烦如果是依照字典序之类的,就能用tree存了,取出头几个字就真的可能不用完整的iterate

Links booklink

Contact Us: admin [ a t ] ucptt.com