Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2014 00:13:46

@mary@
Зарегистрирован: 2014-09-28
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложеные списки

dimy44, а можете объяснить что именно значит 1 for i, 1-это как true?

Офлайн

#2 Ноя. 6, 2014 00:18:22

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Вложеные списки

dimy44

>>> len([1 for i in "qwerty 1.3 esfs".split() if not i.isdigit()])
3
>>> len([1 for i in "qwerty 13 esfs".split() if not i.isdigit()])
2
вот так тогда:
print(len([1 for i in map(lambda x: x.strip('0123456789,.'), file.read().split()) if i != '']))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Ноя. 6, 2014 00:21:42)

Офлайн

#3 Ноя. 6, 2014 07:55:27

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вложеные списки

Мой пример только целые отсеивает. Уточняйте условие - какие числа могут быть?

Офлайн

#4 Ноя. 6, 2014 08:35:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Вложеные списки

но сказано, числа и знаки припенания, даже если целый, то:

>>> len([1 for i in 'год - 2014. день - 244.'.split() if not i.isdigit()])
6



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Ноя. 6, 2014 08:58:39

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Вложеные списки

# coding=utf-8
import re
 
my_string = """\w
When the LOCALE and UNICODE flags are not specified, 
matches any alphanumeric character and the underscore;
this is equivalent to the set [a-zA-Z0-9_]. With LOCALE, it will match the
set [0-9_] plus whatever characters are defined as alphanumeric for the current locale.
If UNICODE is set, this will match the characters [0-9_] plus whatever is classified
as alphanumeric in the Unicode character properties database.
"""
 
my_re = re.compile('[\w\[\]\-]+', re.UNICODE)
print my_re.findall(my_string)
print len(my_re.findall(my_string))
['w', 'When', 'the', 'LOCALE', ..., 'character', 'properties', 'database']
65

Но тут проблема в том, что “-” будет считаться как отдельно слово (как и “красно-синий”).
Также не будут корректно обрабатываться слова с переносом на следующую строку.

Отредактировано GreyZmeem (Ноя. 6, 2014 09:05:02)

Офлайн

#6 Ноя. 6, 2014 09:33:56

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вложеные списки

text = 'йцукен 12, гшфыва -3.0 Dfg 6.9e+66 6.9e-66, 9999L'.decode('utf-8').replace('-', '')
pattern = re.compile(r'(\d+\.?\d*E\+?\d+)|(\d+L)|[\d\W]', re.U|re.I)
print(len(pattern.sub(' ', text).split()))
а так?

Офлайн

#7 Ноя. 11, 2014 17:07:11

@mary@
Зарегистрирован: 2014-09-28
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложеные списки

Спасибо всем большое) Так много методов узнала

Офлайн

#8 Ноя. 11, 2014 17:11:32

@mary@
Зарегистрирован: 2014-09-28
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложеные списки

Помогите пожалуйста в следующем вопросе: Сгенерировать последовательность длиной 255 из целых чисел в диапазоне (-6, 6).
• Определить в последовательности самую длинную субпоследовательность, состоящую из возрастающих значений. Вывести номер начального элемента и содержимое этой субпоследовательности.
• Определить в последовательности самую длинную субпоследовательность, все элементы которой больше среднего значения всей последовательности. Вывести номер начального элемента и содержимое этой субпоследовательности.
Мой мозг смог создать только последовательность:
[code for i in range(255):
i=random.randint(-6,6)
a.append(i)]

Офлайн

#9 Ноя. 11, 2014 18:16:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Вложеные списки

import random
a = [random.randint(-6, 6) for i in range(255)]
#Определить в последовательности самую длинную субпоследовательность, состоящую из возрастающих значений.
rb = le = lb = 0
for i in xrange(1, len(a)):
    if a[i] <= a[i-1]:
        if i - rb > le - lb:
            le, lb = i, rb
        rb = i
print lb, a[lb:le]
#Определить в последовательности самую длинную субпоследовательность, все элементы которой больше среднего значения всей последовательности.
s = sum(a)/255.0
rb = le = lb = 0
for i in xrange(len(a)):
    if a[i] <= s:
        if i - rb > le - lb:
            le, lb = i, rb+1
        rb = i
print lb, a[lb:le]



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Ноя. 11, 2014 18:17:08)

Офлайн

#10 Ноя. 11, 2014 21:50:24

@mary@
Зарегистрирован: 2014-09-28
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложеные списки

Спасибо)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version