【问题标题】:Python iteration on list列表中的 Python 迭代
【发布时间】:2017-11-10 14:21:48
【问题描述】:

我有这个例子

a='Datenfernübertragung remote data transmission|long-distance data transmission|long-distance data transfer|remote data transmission   Preferred|Forbidden|Forbidden|'
b = a.split('\t')
for item in b[1].split('|'):
  indeks=b[1].split('|').index(item)
  print(indeks)

它此时返回0, 1, 2, 0,它们是remote data transmission|long-distance data transmission|long-distance data transfer|remote data transmission 的索引,但为什么它返回索引0,而不是打印索引3?

谢谢

【问题讨论】:

  • 如果您想获取索引,请查看enumerate
  • 因为index 找到了某事的第一个实例。拆分中remote data transmission 的第一个实例是拆分的第一个元素。
  • Shaun 你能把这个作为答案,列举解决我的问题。谢谢

标签: list python-3.x loops indexing iteration


【解决方案1】:
Python 3.4.3 (default, Nov 17 2016, 01:11:57) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a='Datenfernübertragung remote data transmission|long-distance data transmission|long-distance data transfer|remote data transmission   Preferred|Forbidden|Forbidden|'
>>> b = a.split('\t')
>>> b
['Datenfernübertragung remote data transmission|long-distance data transmission|long-distance data transfer|remote data transmission   Preferred|Forbidden|Forbidden|']
>>> b[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

您的字符串中没有任何 \t,b 是一个单项列表,其索引为零。因此,您的代码 sn-p 是完全错误的。

据我所知,您已尝试为字符串中的竖线分隔值派生索引。希望这个 sn-p 应该以一种非常简洁的方式做到这一点:

>>> for i, j in enumerate(a.split('|')):
...     print(i, j)
... 
0 Datenfernübertragung remote data transmission
1 long-distance data transmission
2 long-distance data transfer
3 remote data transmission   Preferred
4 Forbidden
5 Forbidden
6 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多