我正在研究一个问题,我想在某些条件下打印“X:s”或“ - ” - 就像坐标系一样。
给出两个清单:
my_list = [n for n in range(11)]
和
coordinates = [3,5,7,8]
假设给定元素位于coordinates
和my_list
中,则X
将打印在该元素值的索引处; “ - ”将打印在没有这种匹配的地方。
鉴于coordinates
和my_list
,会发生以下情况:
>>> ––X–X–XX
这是我到目前为止所提出的
for n in range(len(coordinates)):
if coordinates[n] in my_list:
print("–"*(coordinates[n]-(2**n)), end="")
print("X", end="")
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
我建议只浏览你需要打印的字符串的整个长度(len(my_list)
),并在每个索引上检查是否需要打印X或 - 。
这样的事情:
for i in my_list:
if i+1 in coordinates:
print("X", end="")
else:
print("-", end="")
print("") # go down a line
答案 1 :(得分:1)
试试这个,
In [42]: ''.join(['X' if i+1 in coordinates else '-' for i in my_list])
Out[42]: '--X-X-XX---'
不要做my_list = [n for n in range(11)]
,range(11)
它自己给出一个元素列表,不需要列表理解。
答案 2 :(得分:1)
你可以直接使用genetator .join
到字符串:
public function postActivateUser(Request $request)
{
// get the user from activation token
$user = User::findByToken($request->token);
$user->enabled = 1;
$user->save();
return response()->json(['result' => true, 'msg' => 'Your account has been activated.']);
}