【问题标题】:How to get indexed entries from a list? [duplicate]如何从列表中获取索引条目? [复制]
【发布时间】:2014-01-10 14:55:58
【问题描述】:

我有一个清单:

a=['a1','a2','a3','a4']

并希望按以下顺序获取相邻的列表条目,例如

a1 a2
a2 a3
a3 a4

我尝试关注但它不起作用。

for i,b in enumerate(a):
    w1=i[i]
    w2=i[i+1]
    print w1,w2

有什么建议吗?

【问题讨论】:

标签: python python-2.7


【解决方案1】:

不同的选择:

循环索引直到长度减 1:

for i in xrange(len(a) - 1):
    print a[i:i+2]

或将列表和列表的一部分压缩在一起,超过第一个索引:

for window in zip(a, a[1:]):
    print window

或将列表和列表上的迭代器压缩在一起,前进一步:

a_iter = iter(a)
next(a_iter)
for window in zip(a, a_iter):
    print window

【讨论】:

  • 谢谢。它可以按我的需要工作。
  • 如果不介意的话。我们可以一起使用元组和列表吗:for i,j in zip((a,a[1:]),l):
  • 不,但您可以嵌套它们:zip(zip(a, a[1:]), l).
【解决方案2】:

这是一个通用的解决方案

def get_entries(a, size):
    return [a[i:i+size] for i in range(len(a) - (size - 1))]

a = ['a1','a2','a3','a4']
for i in range(1, 5):
    print get_entries(a, i)

输出

[['a1'], ['a2'], ['a3'], ['a4']]
[['a1', 'a2'], ['a2', 'a3'], ['a3', 'a4']]
[['a1', 'a2', 'a3'], ['a2', 'a3', 'a4']]
[['a1', 'a2', 'a3', 'a4']]

【讨论】:

    【解决方案3】:
    [(a[i],a[i+1]) for i in range(0, len(a) - 1)]
    

    您的代码包含符号

    i[i]
    

    可能是一个错字,它不会执行,因为在您的代码中 i 是一个整数。稍作修改即可使原始代码生效:

    for i in range(len(a)-1):
        w1=a[i]
        w2=a[i+1]
        print w1,w2
    

    【讨论】:

    • 你是帮OP解决问题还是狙击?
    • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • ??我测试了它,它工作正常。 In [2]: [(a[i],a[i+1]) for i in range(0, len(a) - 1)] Out[2]: [('a1', 'a2'), ('a2', 'a3'), ('a3', 'a4')]
    • 也许我理解错了。 “是语法错误”是什么意思?
    • 我让 op 知道为什么他们的代码无法运行。如果 i 是整数,则 i[i] 不起作用。
    猜你喜欢
    • 2019-01-25
    • 2019-10-31
    • 2013-06-15
    • 2015-07-22
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多