具有重复奇数的整数列表

Olu*_*ide 1 python

鉴于名单0,以N连续的整数,其中N的偶数,如A = [0 , 1 , 2 , 3 , 4]我在寻找一个列表理解,即类型[a for a in A],创建另一个列表B = [0 , 1 , 1 , 2 , 3 , 3 , 4]是重复输入列表中的奇数,A.

Jon*_*ier 5

这是一个(有点难看)解决方案,列表理解:

a = range(5)
list(itertools.chain(*[[x, x] if x % 2 == 1 else [x] for x in a]))
# => [0, 1, 1, 2, 3, 3, 4]
Run Code Online (Sandbox Code Playgroud)

列表推导构建了一个子列表列表:

[[x, x] if x % 2 == 1 else [x] for x in a] # => [[0], [1, 1], [2], [3, 3], [4]]
Run Code Online (Sandbox Code Playgroud)

itertools.chain调用只是在Python中展平列表的众多方法之一.

  • @HansEngel,我很高兴你开悟了!=)一个小问题,但是 - `itertools.chain`返回一个生成器,而不是一个列表(你可能想澄清这个/使用`list()`来转换). (2认同)