下記を内包表記とするには、どうしたらいいでしょうか?
Python
1ans = [
2 [line_1, line_2]
3 for line_1, row in enumerate(li)
4 for line_2, elm in enumerate(row)
5 if elm == 2
6]
ただ、さすがにこれは読みづらいので、適当に処理を分けた方が良いです。
こんな感じに組んでみても面白いかもしれませんね。
Python
1lst = [[1, 1, 1, 1], [2, 2, 5, 2], [100, [1, 2, 4], 0, 2], 2]
2print(lst)
3
4def _recursive_enumerate_inner(src, indice):
5 if isinstance(src, (list, tuple)):
6 for i, inner in enumerate(src):
7 yield from _recursive_enumerate_inner(inner, indice + [i])
8 else:
9 yield indice, src
10
11def recursive_enumerate(src):
12 yield from _recursive_enumerate_inner(src, [])
13
14def recursive_index(src, purpose):
15 return (
16 indice
17 for indice, elem in recursive_enumerate(src)
18 if elem == purpose
19 )
20
21purpose = 2
22for ans in recursive_index(lst, purpose):
23 print(f'{purpose} at {ans}.')
実行結果 Wandbox
plain
1[[1, 1, 1, 1], [2, 2, 5, 2], [100, [1, 2, 4], 0, 2], 2]
22 at [1, 0].
32 at [1, 1].
42 at [1, 3].
52 at [2, 1, 1].
62 at [2, 3].
72 at [3].
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/04 20:56