猿问

如何将矩阵(或列表列表)与空格和字母组合成字符串?

如何将这个数组组合成一个字符串?


array(['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',

       ' E       E               EEE                       ',

       '                     TT                            ',

       '                       CC                      CCCC'])

结果应如下所示:


   result = 'EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'


天涯尽头无女友
浏览 187回答 3
3回答

料青山看我应如是

一种快速的方法是使用zip逐个字符处理,并在每个位置取最大值;arr = ['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',       ' E       E               EEE                       ',       '                     TT                            ',       '                       CC                      CCCC']''.join(max(x) for x in zip(*arr))' EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'

慕村225694

像这样的东西?array =['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',        ' E       E               EEE                       ',        '                     TT                            ',        '                       CC                      CCCC']result = []for pos in zip(*array):                   # create tuples of chars from the same index in all strings    char = ''.join(pos).replace(' ', '')  # remove all space chars    if char:                              # if there's anything left (ie. skip the char at index 0)        result.append(char[-1])           # then append the char from the array closest to the bottomresult = ''.join(result)                  # convert back to stringprint result哪个打印EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC

慕森王

这是一个numpy的解决方案:>>> xarray(['&nbsp; HHHHHHH HHHHHHHHHHH&nbsp; &nbsp; &nbsp; &nbsp;HHHHHHHHHHHHHHHHHHH&nbsp; &nbsp; ',&nbsp; &nbsp; &nbsp; &nbsp;' E&nbsp; &nbsp; &nbsp; &nbsp;E&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EEE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;',&nbsp; &nbsp; &nbsp; &nbsp;'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ',&nbsp; &nbsp; &nbsp; &nbsp;'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CC&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CCCC'],&nbsp; &nbsp; &nbsp; dtype='<U51')>>> x.view('u4').reshape(len(x), -1).max(0).view(x.dtype).item(0).strip()'EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'时间:f_pp&nbsp; 5.941 usf_tb 27.473 usf_ji 21.265 us产生计时的代码:import numpy as npfrom timeit import timeitx = np.array(['&nbsp; HHHHHHH HHHHHHHHHHH&nbsp; &nbsp; &nbsp; &nbsp;HHHHHHHHHHHHHHHHHHH&nbsp; &nbsp; ',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ' E&nbsp; &nbsp; &nbsp; &nbsp;E&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EEE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CC&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CCCC'])def f_pp():&nbsp; &nbsp; return x.view('u4').reshape(len(x), -1).max(0).view(x.dtype).item(0).strip()def f_tb():&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; result = []&nbsp; &nbsp; for pos in zip(*x):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# create tuples of chars from the same index in all string&nbsp; &nbsp; &nbsp; &nbsp; char = ''.join(pos).replace(' ', '')&nbsp; # remove all space chars&nbsp; &nbsp; &nbsp; &nbsp; if char:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # if there's anything left (ie. skip the char at index 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result.append(char[-1])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# then append the char from the array closest to the bottom&nbsp; &nbsp; return ''.join(result)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # convert back to stringdef f_ji():&nbsp; &nbsp; return ''.join(max(y) for y in zip(*x)).strip()for f in (f_pp, f_tb, f_ji):&nbsp; &nbsp; print(f.__name__, f'{timeit(f, number=1000) * 1000:>6.3f} us')
随时随地看视频慕课网APP

相关分类

Python
我要回答