2013-08-03 2 views
0

У меня есть список, который состоит из подсписок определенной длины, вроде [["a","b","c","d"],["a","b","c","d"],["a","b","c","d","e"]]. То, что я хочу сделать, это найти индекс подписок, который не имеет определенной длины, а затем распечатать этот индекс. Например, в списке примеров последний подсписок не имеет длины четыре, поэтому я бы напечатал list 2 does not have correct length. Это то, что у меня есть до сих пор:Распечатать индекс подписок с ошибкой?

for i in newlist: 
    if len(i) == 4: 
     print("okay") 
elif len(i) != 4: 
    ind = i[0:]  #this isnt finished; this prints out the lists with the not correct length, but not their indecies 
    print("not okay",ind) 

Заранее благодарен!

ответ

1

Если вы хотите как индекс, так и объект, вы можете часто использовать enumerate, что дает (index, element) кортежей. Например:

>>> seq = "a", "b", "c" 
>>> enumerate(seq) 
<enumerate object at 0x102714eb0> 
>>> list(enumerate(seq)) 
[(0, 'a'), (1, 'b'), (2, 'c')] 

и так:

newlist = [["a","b","c","d"],["a","b","c","d"],["a","b","c","d","e"]] 

for i, sublist in enumerate(newlist): 
    if len(sublist) == 4: 
     print("sublist #", i, "is okay") 
    else: 
     print("sublist #", i, "is not okay") 

производит

sublist # 0 is okay 
sublist # 1 is okay 
sublist # 2 is not okay 
+0

Это действительно помогло! Благодаря! Просто интересно, есть ли способ не иметь объект, только индекс? – choochoopain

+1

Вам нужно, чтобы объект занимал свою длину. Вы можете использовать 'for i в диапазоне (len (newlist)):' и затем 'newlist [i]', но это считается непитоническим стилем. – DSM

0

Я думаю, что DSM получил ответ вы были после, но вы также можете использовать index method и написать что-то вроде следующие:

new_list = [["a","b","c","d"],["a","b","c","d"],["a","b","c","d","e"]] 
size_filter = 4 
# all values that are not 4 in size 
indexes = [new_list.index(val) for val in new_list if len(val)!=size_filter] 
# output values that match 
for index in indexes: 
    print("{0} is not the correct length".format(index)) 
Смежные вопросы