作者qoo33456 (巷口凉面摊)
看板Python
标题[问题] string in list 抓出每个字串的前n个char
时间Sat Sep 4 22:03:24 2021
最简单的想法是
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个
---------------
输出format:
输出以下方式都可以
假设n为2的话希望输出
["ab", "dc", "ae"]
["ada", "bce"]
或是其他型态 只要能快速取出前n个字元就好
因为list中string数量很大,所以想避免去iterate list
先感谢各位大神
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.187.156 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1630764206.A.DFE.html
1F:推 ckc1ark: 这两个输出就不一样了 要不要先确定一下output format 09/04 22:13
抱歉没写清楚 补上输出
※ 编辑: qoo33456 (59.115.187.156 台湾), 09/04/2021 22:21:42
※ 编辑: qoo33456 (59.115.187.156 台湾), 09/04/2021 22:23:37
2F:推 sherees: 1. itertools.zip_longest 09/04 23:23
3F:→ sherees: 2. enumerate+break 09/04 23:23
4F:推 Kitten1156: import numpy as np 09/04 23:24
5F:→ Kitten1156: a = ["abcde","fgh","ijklm","nop","qrstiuv","wxyz"] 09/04 23:24
6F:→ Kitten1156: b = np.chararray(a) 09/04 23:24
7F:→ Kitten1156: np.char.ljust(b,4) 09/04 23:24
8F:→ Kitten1156: #array(['abcd', 'fgh ', 'ijkl', 'nop ', 'qrst', 'w 09/04 23:24
9F:→ Kitten1156: xyz'], dtype='<U4') 09/04 23:24
10F:→ Kitten1156: b那行写错了..是array 09/04 23:29
11F:→ Kitten1156: 再送两句 09/04 23:33
12F:→ Kitten1156: d = np.char.strip(c) #去空白 09/04 23:33
13F:→ Kitten1156: e = d.tolist() #转回list 09/04 23:33
14F:推 s0914714: 不是用slice就好? 09/04 23:51
15F:推 art1: from functools import partial 09/05 08:55
16F:→ art1: import re 09/05 08:55
17F:→ art1: ge = map(partial(re.match, '.{2}'), your_list) 09/05 08:56
18F:→ art1: next(ge)[0] 就是你要的前几个字,不过只适用於较短的字串 09/05 08:58
19F:推 art1: 只是切分字串用到正规表达式感觉有点过头... 09/05 09:03
20F:推 s0914714: 你不iterate整个list怎麽有办法抓出每个item的前两位? 09/05 09:31
21F:→ LP9527: 为啥不给马儿吃草 09/05 18:25
22F:推 lycantrope: 不iter只好recursive了吗 w 09/05 22:43
23F:→ sating00: 很好奇有什麽东西可以不跑回圈就全部完成 09/06 00:53
24F:推 ddavid: 可能要一开始资料结构就特殊设计了,把工做在insert那边 09/06 16:16
25F:→ ddavid: 虽然我这麽说,但还是没想到真的就有比较好的方式 09/06 16:18
26F:→ ddavid: 而且他还要求依输入序输出这点麻烦 09/06 16:19
27F:→ ddavid: 如果是依照字典序之类的,就能用tree存了,取出头几个字就 09/06 16:21
28F:→ ddavid: 真的可能不用完整的iterate 09/06 16:22