Найти - Пользователи
Полная версия: Разделить список на два, по условию
Начало » Python для новичков » Разделить список на два, по условию
1
Ubhra
Добрый день.
Есть список, в каждой строке есть подстрока содержащая ‘вход’ или ‘выход’.
Как разделить на два списка в одном строки содержащие ‘вход’ во втором ‘выход’?
Rodegast
 >>> s = [1, 2, 1, 1, 1, 2, 2, 1, 2]
>>> def summum(x, y):
...     if y == 1:
...         x[0].append(y)
...     else:
...         x[1].append(y)
...     return x
 
>>> [odin, dva] = reduce(summum, s, [[],[]])
>>> odin
[1, 1, 1, 1, 1]
>>> dva
[2, 2, 2, 2]
FishHook

А зачем вся эта светомузыка нужна, если можно узнать количество элементов 1 и элементов 2 и сформировать (нахрена???) два списка одинаковых значений?
Ubhra
Нужно массив разделить на два.
Строки содержащие ‘вход’ в один, а ‘выход’ в другой.

6:45:23;вход;Фамилия Имя Отчество;01.08.2017
6:45:45;выход;Фамилия Имя Отчество;01.08.2017
6:46:32;выход;Фамилия Имя Отчество;01.08.2017
6:57:01;вход;Фамилия Имя Отчество;01.08.2017
7:18:45;выход;Фамилия Имя Отчество;01.08.2017
18:11:40;вход;Фамилия Имя Отчество;01.08.2017
18:21:17;вход;Фамилия Имя Отчество;01.08.2017
18:29:53;вход;Фамилия Имя Отчество;01.08.2017
18:30:31;вход;Фамилия Имя Отчество;01.08.2017
18:30:35;вход;Фамилия Имя Отчество;01.08.2017
Ubhra
Пытаюсь перебирать элементы по строкам и если совпадение TRUE, записать строку в один массив, иначе во второй. Не получается, в первом массиве создает только ‘[’, а второй заполняет всем массивом изначальных, разбив его на символы.

     for row in nf6:
        for elem in row:
            if elem == str('вход'):
                m_in.append(row)
            else:
                m_out.append(row)
    f_one.write(str(m_in))
    f_two.write(str(m_out))
Rodegast
 u"вход" in elem
Ubhra
Это в условии if заменить нужно, или вообще обойтись только for?
Rodegast
Вот тебе адаптированный вариант:
 s = [
	u"6:45:23;вход;Фамилия Имя Отчество;01.08.2017",
	u"6:45:45;выход;Фамилия Имя Отчество;01.08.2017",
	u"6:46:32;выход;Фамилия Имя Отчество;01.08.2017",
	u"6:57:01;вход;Фамилия Имя Отчество;01.08.2017",
	u"7:18:45;выход;Фамилия Имя Отчество;01.08.2017",
	u"18:11:40;вход;Фамилия Имя Отчество;01.08.2017",
	u"18:21:17;вход;Фамилия Имя Отчество;01.08.2017",
	u"18:29:53;вход;Фамилия Имя Отчество;01.08.2017",
	u"18:30:31;вход;Фамилия Имя Отчество;01.08.2017",
	u"18:30:35;вход;Фамилия Имя Отчество;01.08.2017"
]
def summum(x, y):
     if u"вход" in y:
         x[0].append(y)
     else:
         x[1].append(y)
     return x
[odin, dva] = reduce(summum, s, [[],[]])
print odin, dva
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB