darvark
darvark

Reputation: 334

Python iteration on list

I've got this example

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)

and it returns at this moment 0, 1, 2, 0 which are indexes of remote data transmission|long-distance data transmission|long-distance data transfer|remote data transmission but why it return to index 0, instead of printing index 3?

Thanks

Upvotes: 0

Views: 36

Answers (1)

Alioth
Alioth

Reputation: 603

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

There is no any \t in your string, b is a single-item list and its index is zero. Thus your code snippet is completely wrong.

As I could understand you've took an attempt to derive indexes for vertical bar separated values in the string. Hope this snippet should do it in a much neat way:

>>> 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 

Upvotes: 2

Related Questions