作者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/m.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