New*_*101 3 python for-loop list
symbol_list = ["....firstline.\\.||hi",
"pythonisasnake..\....",
"||||last.\\|line\\..."]
normal_list = ["ABCDfirstlineEFGHIJhi",
"pythonisasnakeKLMNOPQ",
"RSTUlastVWXYlineZABCD"]
Run Code Online (Sandbox Code Playgroud)
在symbol_list,我想用相应位置的字母替换符号,normal_list我想用列表替换列表中的非符号*
. \ | new_list = ["ABCD*********EFGHIJ**",
"**************KLMNOPQ",
"RSTU****VWXY****ZABCD"]
Run Code Online (Sandbox Code Playgroud)
这样做的解决方案是什么?
对于这两个列表,我不知何故需要访问每行中的每个项目,这看起来真的很复杂.我尝试用for循环开始这个:
for symbol_row in symbol_list:
for symbol_item in symbol_row:
for normal_row in normal_list:
for normal_item in normal_row:
Run Code Online (Sandbox Code Playgroud)
这令人困惑,似乎建议最多做两次
然后我试图检查其中一个条件:
if symbol_item in (".","\\","|"): # because \ is an escape character
symbol_row = symbol_row.replace(symbol_item, normal_item)
Run Code Online (Sandbox Code Playgroud)
然后我添加了这个新行,new_list但我的列表最终比我打印出来之前的时间长了10倍
new_list.append(symbol_row)
Run Code Online (Sandbox Code Playgroud)
它可以通过线条理解和三元比较来完成:
symbol_list = ["....firstline.\\.||hi",
"pythonisasnake..\....",
"||||last.\\|line\\..."]
normal_list = ["ABCDfirstlineEFGHIJhi",
"pythonisasnakeKLMNOPQ",
"RSTUlastVWXYlineZABCD"]
print([''.join([n if not s.isalpha() else '*' for n,s in zip(nor, sym)])
for nor, sym in zip(normal_list, symbol_list)])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |