gpt4 book ai didi

Python,连接垂直列表

转载 作者:太空狗 更新时间:2023-10-30 00:44:35 25 4
gpt4 key购买 nike

我有这个例如这个字符:

.....U......
L...L.######
.S....#.....
....L.......

我存储在一个列表中

chars = ['.....U......', 'L...L.######', '.S....#.....', '....L.......']

我用它来将它存储在字符中:

for x in range(0, N):
g = input()
chars.append(g)

现在的问题是我想把字母 L 之间的所有点都变成 # 但垂直,所以像这样:

.....U......
L...L.######
.S..#.#.....
....L.......

我已经尝试了几个小时了,但我想不出任何东西。非常感谢帮助。

编辑:我用它来水平连接它们。并且有效。

while y != N:
modchars0 = list(chars[y])

if modchars0.count('L') == 0:
y += 1

else:
for k in range(0, M):
if 'L' in modchars0[k]:
start = k + 1
break

for l in range(M-1, 0, -1):
if 'L' in modchars0[l]:
end = l
break

for h in range(start, end):
if 'L' in modchars0[h]:
pass
else:
modchars0[h] = '#'

modchars1 = modchars1.join(modchars0)
chars[y] = modchars1
y += 1

最佳答案

正如 @U2EF1 在评论中提到的,您可以使用 zip(*chars) 对列表进行转置,然后使用正则表达式将“L”之间的点转换为“#”。然后在最后再次zip(*) 新项目以获得所需的输出:

>>> import re                                                             
>>> r = re.compile(r'(?<=L).*(?=L)')
>>> def rep(m):
return m.group().replace('.', '#')
...
>>> zipped = (r.sub(rep, ''.join(x)) for x in zip(*chars))
>>> for x in zip(*zipped):
print ''.join(x)
...
.....U......
L...L.######
.S..#.#.....
....L.......

关于Python,连接垂直列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com