Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 30, 2017 10:57:34

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

Добрый день.
Есть список, в каждой строке есть подстрока содержащая ‘вход’ или ‘выход’.
Как разделить на два списка в одном строки содержащие ‘вход’ во втором ‘выход’?



Офлайн

#2 Авг. 30, 2017 11:29:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

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



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Авг. 30, 2017 11:37:16)

Офлайн

#3 Авг. 30, 2017 12:02:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Разделить список на два, по условию


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



Офлайн

#4 Авг. 30, 2017 13:34:29

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

Нужно массив разделить на два.
Строки содержащие ‘вход’ в один, а ‘выход’ в другой.

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



Офлайн

#5 Авг. 30, 2017 14:07:24

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

Пытаюсь перебирать элементы по строкам и если совпадение 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))



Офлайн

#6 Авг. 30, 2017 14:50:25

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

 u"вход" in elem



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Авг. 30, 2017 15:17:28

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

Это в условии if заменить нужно, или вообще обойтись только for?



Офлайн

#8 Авг. 30, 2017 16:25:15

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Разделить список на два, по условию

Вот тебе адаптированный вариант:

 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



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version