Методы для списков (изменяемые последовательности)




Практическое занятие

Работа со строками и последовательностями

 

Задание 1

Выполните в IDLE следующие команды

>>> str1='word'

>>> str1[1]

 

>>> str2=''123''

>>> str1+str2

>>> str1*3

 

>>> a=3*4

>>> b=str(a)

b

Загрузите модуль string (загрузка любого модуля производится одними командами, примените одну из команд, рассмотренных для подключения модуля math).

Для вызова списка всех функций, содержащихся в модуле (списка атрибутов для данного типа переменной) используется функция dir.

dir(имя модуля) или dir(имя переменной)

dir(string) или dir(str1)

Для ознакомления с содержанием описания каждой функции используйте команду help(имя модуля) или help(имя переменной).

 

Задание 2

Ознакомьтесь с содержанием приложения 1.

Задайте в IDLE переменную и присвойте ей строку, состоящую из нескольких предложений.

Выполните следующие задания:

1) представьте строку в виде списка, элементы которого выделены из исходной строки

– по пробелам,

– по точкам;

2) выведите строку, в которой каждое слово исходной строки начинается с большой буквы;

3) проведите поиск по строке определенного слова.

Задание 3

Задайте переменную А и присвойте ей следующий кортеж.

>>> A=(1,2,3,4,5)

Обратитесь к элементам кортежа с индексом 0, 6, -1. Поэкспериментируйте с другими значениями индексов. Проанализируйте полученные результаты.

>>> A[0]

>>> A[6]

>>> A[-1]

Как Вы считаете, что должно произойти при выполнении следующей команды. Проверьте свое предположение.

>>> A[0]=7

 

Вызовите срезы кортежа – начальный, центральный, конечный. Обратите внимание на включение в срез элемента с начальным из указанных индексов и с конечным. Прокомментируйте результат.

>>> A[1:4]

>>> A[:2]

>>> A[2:]

>>> A[::-1]

Выясним подробнее, что происходит в результате команд A=D и A=D[:].

Для этого используем два способа в первом сравним значения двух переменных с помощью оператора = = (сравнение) и is (оператор проверки на идентичность, т.е. одинаковость с точки зрения физического смысла).

>>> D=(1,2,3,4,5,6,7,8,9)

>>> A=D

>>> A

(1, 2, 3, 4, 5, 6, 7, 8, 9)

>>> A==D

True

>>> A is D

True

Видно, что объекты, на которые ссылаются переменные A и D полностью идентичны, т.е. это не два разных, а один и тот же объект.

Второй способ – проверить адреса в памяти с помощью команды id.

>>> id(A)

>>> id(D)

Адреса для значений переменных A и D совпадают, что означает один и тот же объект.

Задание 4

Задайте переменную А и присвойте ей следующий спиок.

>>> A=[1,2,3,4,5]

Выполните команду

>>> A[0]=5

В чем отличие от соответствующей команды для кортежа?

Выполните команды

>>> B=A

>>> C=A[:]

Аналогично исследованию, проведенному для кортежей, выясните, в чем отличие данных команд для списков, ответив на вопрос в каком случае создается новый объект, а в каком случае производится ссылка на уже существующий.

 

Выполните команды

>>> A=[1,2,3]

>>> B=A

>>> A[0]=4

Выясните, что в результате представляет переменная A и переменная B.

Задание 5

Функция range (начальный элемент, конечный элемент, шаг) генерирует список из целых чисел в указанном диапазоне значений и с указанным шагом. Если не указан начальный элемент, то по умолчанию список начинается с 0, значение переменной шаг без ее указания принимается равным 1.

Выясните, какие списки будут созданы в результате выполнения следующих команд.

>>> range(10)

>>> range(2,10)

>>> range(2,10,2)

>>> range(-5)

>>> range(-5,0)

>>> tuple(range(10))

 

Рассмотрим некоторые методы последовательностей.

len(s) – длина последовательности s

Задайте переменные и присвойте им следующие значения, определите длину для каждой переменной

а='word'

b=(1,2,3)

c=[1,2,3,4]

 

x in s – проверка принадлежности элемента последовательности.

>>> s='word'

>>> 'w' in s

True

 

x not in s = not x in s

del s[i:j:d] – удаление среза (элемента) из последовательности

Для введенных переменных a, b, c выполните команды

del a[0]

del b[0]

del c[0]

Прокомментируйте полученный результат.

Проведите эксперимент со срезом

>>> d=range(10)

>>> del d[0:9:3]

>>> d

 

min(s) – наименьший элемент s

max(s) – наибольший элемент s

Для введенных переменных

а='word'

b=(1,2,3)

c=[1,2,3,4]

найдите наименьший и наибольший элементы.

Методы для списков (изменяемые последовательности)

append(x) – добавляет элемент в конец последовательности.

>>> a='word'

>>> b=range(3)

>>> b.append(a)

>>> b

[0, 1, 2, 'word']

 

count(x) – подсчитывает элементы, равные x.

>>> b.count(1)

>>> b.count('word')

 

extend(s) – добавляет к концу данной последовательности последовательность s.

>>> c=range(3,5)

>>> b.extend(c)

>>> b

[0, 1, 2, 'word', 3, 4]

 

index(x) – возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s.

>>> b.index(1)

 

insert(i, x) – вставляет элемент x в i-й промежуток.

>>> b.insert(4,5)

>>> b

[0, 1, 2, 'word', 5, 3, 4]

 

pop(i) – возвращает i-й элемент, удаляя его из последовательности.

>>> b.pop(3)

'word'

>>> b

[0, 1, 2, 5, 3, 4]

reverse(s) – меняет порядок элементов s на обратный.

>>> b=[0, 1, 2, 5, 3, 4]

>>> b.reverse()

>>> b

[4, 3, 5, 2, 1, 0]

Можно ли с помощью среза создать массив с обратным порядком элементов?

 

sort() – сортирует элементы s. Может быть указана своя функция сравнения cmpfunc.

>>> b.sort()

>>> b

[0, 1, 2, 3, 4, 5]

 

 


 

Приложение

Функции модуля string

FUNCTIONS    
atof(s) atof(s) -> float   Return the floating point number represented by the string s.   Возвращает число с плавающей точкой, представленное строкой s. >>> s='3.14' >>> atof(s) 3.14 >>> atof(s)+2 5.140000000000001 >>> s='word' >>> atof(s)   Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> atof(s) File "C:\Python27\lib\string.py", line 382, in atof return _float(s) ValueError: could not convert string to float: word
atoi(s, base=10) atoi(s [,base]) -> int   Return the integer represented by the string s in the given base, which defaults to 10. The string s must consist of one or more digits, possibly preceded by a sign. If base is 0, it is chosen from the leading characters of s, 0 for octal, 0x or 0X for hexadecimal. If base is 16, a preceding 0x or 0X is accepted.   Возвращает целое число, представленное строй s в системе счисления с данным основанием (второй аргумент в квадратных скобках – для указания не обязателен, значение по умолчанию –10). Если в качестве основания указано число 0, то выбор производится в зависимости от первых символов: 0 – восьмеричная, 0x – шестнадцатиричная. >>> a='12' >>> b='012' >>> c='0x12' >>> atoi(a) >>> atoi(b) >>> atoi(c) Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> atoi(c) File "C:\Python27\lib\string.py", line 397, in atoi return _int(s, base) ValueError: invalid literal for int() with base 10: '0x12' >>> atoi(b,8) >>> atoi(c,16) >>> g='12' >>> atoi(g,8) >>> atoi(g,16) >>> atoi(g,0) >>> atoi(b,0) >>> atoi(c,0)
atol(s, base=10) atol(s [,base]) -> long   Return the long integer represented by the string s in the given base, which defaults to 10. The string s must consist of one or more digits, possibly preceded by a sign. If base is 0, it is chosen from the leading characters of s, 0 for octal, 0x or 0X for hexadecimal. If base is 16, a preceding 0x or 0X is accepted. A trailing L or l is not accepted, unless base is 0.   Возвращает длинное целое число, представленное строй s в системе счисления с данным основанием (второй аргумент в квадратных скобках – для указания не обязателен, значение по умолчанию –10).  
capitalize(s) capitalize(s) -> string   Return a copy of the string s with only its first character capitalized.   Возвращает копию строки s c первой прописной буквой (в верхнем регистре). >>> s='word' >>> capitalize(s) 'Word'
capwords(s, sep=None) capwords(s [,sep]) -> string   Split the argument into words using split, capitalize each word using capitalize, and join the capitalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced by a single space and leading and trailing whitespace are removed, otherwise sep is used to split and join the words.   Разделяет строковый аргумент по словам, каждое слово записывает с прописной буквы (capitalize) и объединяет в строку. Если второй необязательный аргумент sep отсутствует или имеет значение None, то лишние пробелы в начале, конце, а также более одного пробела в середине, удаляются. Если указано значение второго аргумента, то разделение производится по указанному символу. >>> s='word’ >>> capwords(s) 'Word' >>> s='read and write' >>> capwords(s) 'Read And Write' >>> s1=' read and write ' >>> capwords(s1) 'Read And Write' >>> capwords(s1,sep=None) 'Read And Write'   >>> s1='read.write' >>> capwords(s1,sep=".") 'Read.Write'
center(s, width, *args) center(s, width[, fillchar]) -> string   Return a center version of s, in a field of the specified width. padded with spaces as needed. The string is never truncated. If specified the fillchar is used instead of spaces.   Возвращает строку s, увеличенную до указанного количества символов пробелами (если не указан третий параметр) и выровненную в поле данной ширины по центру. Если третий параметр указан, то до указанной ширины строка увеличивается с помощью указанных символов. >>> s='word' >>> center(s, 16) ' word ' >>> center(s, 16,"*") '******word******'
count(s, *args) count(s, sub[, start[,end]]) -> int   Return the number of occurrences of substring sub in string s[start:end]. Optional arguments start and end are interpreted as in slice notation.   Возвращает количество вхождений указанной подстроки s в исходную строку. Необязательные аргументы start, end (начало, конец) интерпретируются в нотации среза. >>> a='Read lecture 1 of abstract of lectures.' >>> a.count("lecture") >>> a.count("lecture",0,20)
expandtabs(s, tabsize=8) expandtabs(s [,tabsize]) -> string   Return a copy of the string s with all tab characters replaced by the appropriate number of spaces, depending on the current column, and the tabsize (default 8).   Возвращает копию строки s, в которой символ табуляции заменяется пробелами с шагом 8. Шаг вставляемых пробелов можно изменить с помощью второго необязательного аргумента.   >>> s='a b' >>> expandtabs(s) 'a b' >>> expandtabs(s,3) 'a b'
find(s, *args) find(s, sub [,start [,end]]) -> int   Return the lowest index in s where substring sub is found, such that sub is contained within s[start,end]. Optional arguments start and end are interpreted as in slice notation.   Return -1 on failure.   Возвращает позицию самого первого (порядок прохождения – слева направо) элемента (наименьший индекс) вхождения подстроки S в исходную строку или срез исходной строки (при указании необязательных аргументов start,end). Возвращает -1, если строка не найдена. >>> a='Read lecture 1 of abstract of lectures.' >>> a.find('lecture') >>> a.find('lecture',20,) >>> a.find('write') -1
index(s, *args) index(s, sub [,start [,end]]) -> int   Like find but raises ValueError when the substring is not found.   Подобно find, но возвращает ValueError, когда подстрока не найдена.
join(words, sep=' ') join(list [,sep]) -> string   Return a string composed of the words in list, with intervening occurrences of sep. The default separator is a single space. (joinfields and join are synonymous)   Объединяет элементы последовательности list, вставляя между ними по умолчанию (второй аргумент не указан) пробел. Разделитель можно изменить, указав значение второго аргумента.   >>> b=["one","two","three"] >>> join(b) 'one two three' >>> join(b,'.') 'one.two.three'
joinfields = join(words, sep=' ') join(list [,sep]) -> string   Return a string composed of the words in list, with intervening occurrences of sep. The default separator is a single space.   (joinfields and join are synonymous)   joinfields и join синонимы
ljust(s, width, *args) ljust(s, width[, fillchar]) -> string   Return a left-justified version of s, in a field of the specified width, padded with spaces as needed. The string is never truncated. If specified the fillchar is used instead of spaces.   Возвращает версию строки s, выровненную по левому краю в поле указанной ширины. Для формирования поля указанной ширины по умолчанию (третий аргумент не указан) добавляются пробелы. Если указать третий аргумент (строка единичной длины), то заполнение до нужной ширины будет произведено указанными символами. >>> a='word' >>> ljust(a,10) 'word ' >>> ljust(a,10,'*') 'word******'
lower(s) lower(s) -> string   Return a copy of the string s converted to lowercase.   Возвращает копию строки s, символы которой приведены к нижнему регистру. >>> a='word' >>> lower(a) 'word' >>> b='Word' >>> lower(b) 'word' >>> c='WORD' >>> lower(c) 'word'
lstrip(s, chars=None) lstrip(s [,chars]) -> string   Return a copy of the string s with leading whitespace removed. If chars is given and not None, remove characters in chars instead.   Возвращает копию строки s с удаленными в начале строки пробелами (если не указан второй аргумент), если указано значение второго аргумента, то удаляются в начале строки указанные символы. >>> a='word' >>> lstrip(a) 'word' >>> b=' word' >>> lstrip(b) 'word' >>> b='***word' >>> lstrip(b,'*') 'word'
maketrans(...) maketrans(frm, to) -> string   Return a translation table (a string of 256 bytes long) suitable for use in string.translate. The strings frm and to must be of the same length.   Создаёт таблицу преобразований, которая переводит одни символы в другие. Первый аргумент представляет строку с символами для преобразования, второй – строку с символами, в которые нужно преобразовать. Оба аргумента должны иметь одинаковую длину. Метод является парным с методом translate(). >>> a=maketrans("abc",'123') >>> s=maketrans("abc",'123') >>> s2="ab" >>> s2.translate(a) '12'
replace(s, old, new, maxreplace=-1) replace (str, old, new[, maxreplace]) -> string   Return a copy of string str with all occurrences of substring old replaced by new. If the optional argument maxreplace is given, only the first maxreplace occurrences are replaced.   Возвращает копию строки s, в которой каждое вхождение подстроки old (второй аргумент) заменяется подстрокой new (третий аргумент). С помощью последнего аргумента можно явно указать количество замен, если этот аргумент не указан, то заменяются все вхождения. str_1='ababab' >>> replace(str_1, "b","c") 'acacac' >>> replace(str_1, "b","c",maxreplace=-1) 'acacac' >>> replace(str_1, "b","c",1) 'acabab'
rfind(s, *args) rfind(s, sub [,start [,end]]) -> int   Return the highest index in s where substring sub is found, such that sub is contained within s[start,end]. Optional arguments start and end are interpreted as in slice notation.   Return -1 on failure.   Возвращает наибольший индекс (крайний справа) вхождения в исходную строку s указанной подстроки sub. Поиск можно производить не по всей строке, а в указанном индексами диапазоне. >>> a='Read lecture 1 of abstract of lectures.' >>> rfind(a,'lecture') >>> rfind(a,'lecture',0,20)
rindex(s, *args) rindex(s, sub [,start [,end]]) -> int   Like rfind but raises ValueError when the substring is not found.   Подобно rfind, но возвращает ValueError, если подстрока не найдена.
rjust(s, width, *args) rjust(s, width[, fillchar]) -> string   Return a right-justified version of s, in a field of the specified width, padded with spaces as needed. The string is never truncated. If specified the fillchar is used instead of spaces.   Выравнивание строки по правому краю в полю указанной ширины (см. ljust)
rsplit(s, sep=None, maxsplit=-1) rsplit(s [,sep [,maxsplit]]) -> list of strings   Return a list of the words in the string s, using sep as the delimiter string, starting at the end of the string and working to the front. If maxsplit is given, at most maxsplit splits are done. If sep is not specified or is None, any whitespace string is a separator.   Аналог split для разбиения строки начиная с правого края. Имеет смысл, когда указанное количество разбиений меньше возможного. >>> a='Read lecture 1 of abstract of lectures.' >>> rsplit(a,' ',2) ['Read lecture 1 of abstract', 'of', 'lectures.']
rstrip(s, chars=None) rstrip(s [,chars]) -> string   Return a copy of the string s with trailing whitespace removed. If chars is given and not None, remove characters in chars instead.   Аналог lstrip для конца строки.
split(s, sep=None, maxsplit=-1) split(s [,sep [,maxsplit]]) -> list of strings   Return a list of the words in the string s, using sep as the delimiter string. If maxsplit is given, splits at no more than maxsplit places (resulting in at most maxsplit+1 words). If sep is not specified or is None, any whitespace string is a separator.   (split and splitfields are synonymous)   Возвращает список слов (строк), разбивая строку s по подстроке sep (не обязателен для указания), количество разделений определяет аргумент maxsplit (по умолчанию – во всей строке). Если разделитель sep не указан, то в качестве разделителя используется знак пробела. >>> a='Read lecture 1 of abstract of lectures.' >>> split(a) ['Read', 'lecture', '1', 'of', 'abstract', 'of', 'lectures.'] >>> split(a,'lecture') ['Read ', ' 1 of abstract of ', 's.'] >>> split(a,' ',2) ['Read', 'lecture', '1 of abstract of lectures.']
splitfields = split(s, sep=None, maxsplit=-1) split(s [,sep [,maxsplit]]) -> list of strings   Return a list of the words in the string s, using sep as the delimiter string. If maxsplit is given, splits at no more than maxsplit places (resulting in at most maxsplit+1 words). If sep is not specified or is None, any whitespace string is a separator.   (split and splitfields are synonymous)   splitfields и split синонимы.
strip(s, chars=None) strip(s [,chars]) -> string   Return a copy of the string s with leading and trailing whitespace removed. If chars is given and not None, remove characters in chars instead. If chars is unicode, S will be converted to unicode before stripping.   Аналог lstrip и rstrip для всей строки.
swapcase(s) swapcase(s) -> string   Return a copy of the string s with upper case characters converted to lowercase and vice versa.   Возвращает копию строки, в которой все символы верхнего регистра преобразованы в символы нижнего, а символы нижнего регистра – в символы верхнего. >>> s='Word' >>> swapcase(s) 'wORD'
translate(s, table, deletions='') translate(s,table [,deletions]) -> string   Return a copy of the string s, where all characters occurring in the optional argument deletions are removed, and the remaining characters have been mapped through the given translation table, which must be a string of length 256. The deletions argument is not allowed for Unicode strings.   Принимает таблицу преобразований и возвращает копию строки с символами, преобразованными в соответствии с данной таблицей. Является парным с maketrans().
upper(s) upper(s) -> string   Return a copy of the string s converted to uppercase.   Возвращает копию строки s, в которой все символы приведены к верхнему регистру. >>> s='Word' >>> upper(s) 'WORD'
zfill(x, width) zfill(x, width) -> string   Pad a numeric string x with zeros on the left, to fill a field of the specified width. The string x is never truncated.     Дополняет строку x нулями слева до поля, указанной ширины. >>> s='Word' >>> zfill(s,10) '000000Word'
DATA ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz' ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' digits = '0123456789' hexdigits = '0123456789abcdefABCDEF' letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv...\xcf\xd0... lowercase = 'abcdefghijklmnopqrstuvwxyz\x83\x90\x9a\x9c\x9d\x9e\x9f\xa... octdigits = '01234567' printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU... punctuation = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ\x80\x81\x8a\x8c\x8d\x8e\x8f\xa... whitespace = '\t\n\x0b\x0c\r '  

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: