[問題] string in list 抓出每個字串的前n個char

看板Python作者 (巷口涼麵攤)時間2年前 (2021/09/04 22:03), 2年前編輯推噓9(9019)
留言28則, 9人參與, 2年前最新討論串1/1
最簡單的想法是 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://www.ptt.cc/bbs/Python/M.1630764206.A.DFE.html

09/04 22:13, 2年前 , 1F
這兩個輸出就不一樣了 要不要先確定一下output format
09/04 22:13, 1F
抱歉沒寫清楚 補上輸出 ※ 編輯: qoo33456 (59.115.187.156 臺灣), 09/04/2021 22:21:42 ※ 編輯: qoo33456 (59.115.187.156 臺灣), 09/04/2021 22:23:37

09/04 23:23, 2年前 , 2F
1. itertools.zip_longest
09/04 23:23, 2F

09/04 23:23, 2年前 , 3F
2. enumerate+break
09/04 23:23, 3F

09/04 23:24, 2年前 , 4F
import numpy as np
09/04 23:24, 4F

09/04 23:24, 2年前 , 5F
a = ["abcde","fgh","ijklm","nop","qrstiuv","wxyz"]
09/04 23:24, 5F

09/04 23:24, 2年前 , 6F
b = np.chararray(a)
09/04 23:24, 6F

09/04 23:24, 2年前 , 7F
np.char.ljust(b,4)
09/04 23:24, 7F

09/04 23:24, 2年前 , 8F
#array(['abcd', 'fgh ', 'ijkl', 'nop ', 'qrst', 'w
09/04 23:24, 8F

09/04 23:24, 2年前 , 9F
xyz'], dtype='<U4')
09/04 23:24, 9F

09/04 23:29, 2年前 , 10F
b那行寫錯了..是array
09/04 23:29, 10F

09/04 23:33, 2年前 , 11F
再送兩句
09/04 23:33, 11F

09/04 23:33, 2年前 , 12F
d = np.char.strip(c) #去空白
09/04 23:33, 12F

09/04 23:33, 2年前 , 13F
e = d.tolist() #轉回list
09/04 23:33, 13F

09/04 23:51, 2年前 , 14F
不是用slice就好?
09/04 23:51, 14F

09/05 08:55, 2年前 , 15F
from functools import partial
09/05 08:55, 15F

09/05 08:55, 2年前 , 16F
import re
09/05 08:55, 16F

09/05 08:56, 2年前 , 17F
ge = map(partial(re.match, '.{2}'), your_list)
09/05 08:56, 17F

09/05 08:58, 2年前 , 18F
next(ge)[0] 就是你要的前幾個字,不過只適用於較短的字串
09/05 08:58, 18F

09/05 09:03, 2年前 , 19F
只是切分字串用到正規表達式感覺有點過頭...
09/05 09:03, 19F

09/05 09:31, 2年前 , 20F
你不iterate整個list怎麼有辦法抓出每個item的前兩位?
09/05 09:31, 20F

09/05 18:25, 2年前 , 21F
為啥不給馬兒吃草
09/05 18:25, 21F

09/05 22:43, 2年前 , 22F
不iter只好recursive了嗎 w
09/05 22:43, 22F

09/06 00:53, 2年前 , 23F
很好奇有什麼東西可以不跑迴圈就全部完成
09/06 00:53, 23F

09/06 16:16, 2年前 , 24F
可能要一開始資料結構就特殊設計了,把工做在insert那邊
09/06 16:16, 24F

09/06 16:18, 2年前 , 25F
雖然我這麼說,但還是沒想到真的就有比較好的方式
09/06 16:18, 25F

09/06 16:19, 2年前 , 26F
而且他還要求依輸入序輸出這點麻煩
09/06 16:19, 26F

09/06 16:21, 2年前 , 27F
如果是依照字典序之類的,就能用tree存了,取出頭幾個字就
09/06 16:21, 27F

09/06 16:22, 2年前 , 28F
真的可能不用完整的iterate
09/06 16:22, 28F
文章代碼(AID): #1XCtokt- (Python)