我必须根据它们的数据类型对这个列表(Lista变量)进行分类,并且只要我选择一个特定的[]进行分类,代码就可以工作,但是在for循环之后for和if循环中的i不会增加。
__author__ = 'rodrigocano'
Lista = [55.5,'hola','abc',10,'5','x5',0.25,['A',2,1.5],5,2,5.3,'AEIOU',('perro','gato','pollo'),[1,2,3],1001,['a',1],'mundo','01/10/2015',20080633,'2.5',0.123,(1,2,'A','B')]
lista_clasificable = len(Lista)
def clasificar(lista_clasificable):
for Lista in range(0,len(lista_clasificable)):
i = 0
lista_string = []
lista_int = []
lista_float =[]
lista_tuple = []
lista_list = [] #duh
if type(lista_clasificable[i]) is str:
lista_string.append(lista_clasificable[i])
i += 1
elif type(lista_clasificable[i]) is int:
lista_int.append(lista_clasificable[i])
i += 1
elif type(lista_clasificable[i]) is float:
lista_float.append(lista_clasificable[i])
i += 1
elif type(lista_clasificable[i]) is list :
lista_list.append(lista_clasificable[i])
i += 1
elif type(lista_clasificable[i]) is tuple:
lista_tuple.append(lista_clasificable[i])
i += 1
return 'Su Lista contiente los siguientes ints',lista_int,'Sus Strings son:',lista_string,'Sus floats son:',lista_float,'Sus listas son:',lista_list,'Y Sus tuplas son:',lista_tuple
print(clasificar(Lista))
答案 0 :(得分:2)
你一遍又一遍地重置我。它在你的for循环中,所以对于每个项目,我首先设置为0.你需要把它放在for循环之前:
i=0
for Lista in range(0,len(lista_clasificable)):
...
有关您的第二个问题,请参阅MSW的评论。你每次都要覆盖主列表,我错过了。
尽管如此,这是非常不同寻常的。而不是获取列表的长度并使用此跟踪索引的设置,只需执行以下操作:
for item in Lista:
do something
Python可以直接在列表中循环 - 您不需要使用索引。
答案 1 :(得分:0)
您在for循环的每次迭代中将i重置为零。将i=0
放在for循环之上。
答案 2 :(得分:0)
这是一个更干净的版本。我不是在解释它,希望你能学到。如果您无法通过手头的手册解决问题,请提出问题。对不起,如果我拙劣的西班牙语。
# a little more pythonically and far less repetitious
def classificar(p, types):
# create a dict of lists such that dict[typename] = []
lists = dict()
for t in types:
lists[t.__name__] = []
# for all of the elements in p, assign them to a type list
# if applicable
for x in p:
for t in types:
if type(x) == t:
lists[t.__name__].append(x)
return lists
input = [55.5,'hola','abc',10,'5','x5',0.25,['A',2,1.5],5,2,5.3,'AEIOU',
('perro','gato','pollo'), [1,2,3], 1001, ['a', 1],
'mundo','01/10/2015',20080633,'2.5',0.123,(1,2,'A','B')]
types = [str, int, float, tuple, list]
lists = classificar(input, types)
print('Su lista contiente los siguientes:')
for type in types:
print(' ', type.__name__, lists[type.__name__])