Форум сайта python.su
0
код
# -*- coding: cp1251 -*-
import random #Подключаем генератор псевдослучайных чисел
keys_list = ['n', 'g'] #Простой массив с обозначением ключей
def some_function_one():
temp_var = random.choice(keys_list) #Выбираем любое обозначение из массива
return temp_var #Возвращаем
print 'Chosen key is', some_function_one()
features_list = [('feat one', 3, 'n'), ('feat two', 2, 'g'), #Массив с ключами
('feat four', 1, 'g'), ('feat five', 1, 'n'), #удельными значениями
('feat six', 0, 'n')] #и флагами
def some_function_two():
counter = len(features_list) #Счетчик равный длине массива с кортежами
while counter > 0: #Сравниваем и удаляем совпадения
if features_list[counter - 1][2] == some_function_one():
del features_list[counter - 1]
counter = counter - 1
some_function_two()
print 'features list after removing some keys', features_list
Chosen key is g
features list after removing some keys [('feat one', 3, 'n'), ('feat four', 1, 'g'), ('feat five', 1, 'n')]
>>>
# -*- coding: cp1251 -*-
import random #Подключаем генератор псевдослучайных чисел
keys_list = ['n', 'g'] #Простой массив с обозначением ключей
def some_function_one():
temp_var = random.choice(keys_list) #Выбираем любое обозначение из массива
return temp_var #Возвращаем
#print 'Chosen key is', some_function_one()
features_list = [('feat one', 3, 'n'), ('feat two', 2, 'g'), #Массив с ключами
('feat four', 1, 'g'), ('feat five', 1, 'n'), #удельными значениями
('feat six', 0, 'n')] #и флагами
def some_function_two():
counter = len(features_list) #Счетчик равный длине массива с кортежами
while counter > 0: #Сравниваем и удаляем совпадения
if features_list[counter - 1][2] == 'n': #some_function_one():
del features_list[counter - 1]
counter = counter - 1
some_function_two()
print 'Chosen key is n'
print 'features list after removing some keys', features_list
Chosen key is n
features list after removing some keys [('feat two', 2, 'g'), ('feat four', 1, 'g')]
Офлайн
221
функция some_function_one(): каждый раз возвращает случайное значение из заданного массива, а вы им в цикле пользуетесь - вот и причина.
Вот исправленный код - но и он не красота (имхо конечно же)
# -*- coding: cp1251 -*- import random # исходные данные keys_list = ['n', 'g'] features_list = [('feat one', 3, 'n'), ('feat two', 2, 'g'), ('feat four', 1, 'g'), ('feat five', 1, 'n'), ('feat six', 0, 'n')] target=random.choice(keys_list) print 'Chosen key is', target def some_function_two(): counter = len(features_list) while counter > 0: if features_list[counter - 1][2] == target: del features_list[counter - 1] counter = counter - 1 some_function_two() print 'features list after removing some keys', features_list
Офлайн
0
Большое спасибо, сейчас вижу, что действительно, я в цикле получаю каждый раз новое значение при вызове функции - классическая ошибка.
Офлайн