Pythonic创建某些元素列表的方法

时间:2018-01-12 18:29:36

标签: python indexing

列出一个列表l,我想在索引处生成一个新的元素列表:

0, 1, 2, 3, 2, 4, 5, 4, 6, 7, 6, 8, 9, 8, 0

我知道这似乎有点奇怪,但a problem是必要的。

至于我的尝试,我目前正在使用以下内容,但希望有人有更短更清洁的东西。

[*l[0:3], l[3], l[2], l[4], l[5], l[4], l[6], l7], l[6], l[8], l[9], l[8], l[0]]

3 个答案:

答案 0 :(得分:2)

您可以使用列表理解:

          $intakesMonth1 = Intakes::whereYear('created_at', '=', 2018)
            ->whereMonth('created_at', '=', 1)
            ->get();

          $intakesMonth2 = Intakes::whereYear('created_at', '=', 2018)
            ->whereMonth('created_at', '=', 2)
            ->get();

答案 1 :(得分:2)

map与项目getter一起使用应该可以胜任:

>>> letters = list('ABCDEFGHIJ')
>>> indexes = [0, 1, 2, 3, 2, 4, 5, 4, 6, 7, 6, 8, 9, 8, 0]
>>> print(list(map(letters.__getitem__, indexes)))
['A', 'B', 'C', 'D', 'C', 'E', 'F', 'E', 'G', 'H', 'G', 'I', 'J', 'I', 'A']
>>> 

答案 2 :(得分:1)

用作l值的项目等于其索引,以便您可以轻松验证结果:

indexes = [0, 1, 2, 3, 2, 4, 5, 4, 6, 7, 6, 8, 9, 8, 0]

l = list(range(15))
print(l)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

result = [l[i] for i in indexes]
print(result)  # [0, 1, 2, 3, 2, 4, 5, 4, 6, 7, 6, 8, 9, 8, 0]