Определение вхождения элемента в последовательность

Условные операторы in и not in проверяют, входит или нет указанное значение в структуру данных. Проверяется равенство значений (==), а не идентичность объектов (is).

ist = [1,2,4,5]
ict = {'a':1, 'b':2, 100:"hello"}
tr = "abcdef...wxyz"
 
print(3 in ist) # False
print(5 in ist) # True
print(7 not in ist) # True
 
print('b' in ict) # True
print(2 in ict) # False
 
print('abc' in tr) # True
print('!bc' in tr) # False

Теги

Ссылки на объекты, копирование структур

 

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

У словаря есть встроенный метод copy(), создающий его поверхнострую копию. У списка такого метода нет. (Список можно скопировать взяв срез.)

Теги

Модуль pickle

С помощью модуля pickle можно преобразовать объект в набор байтов, а потом обратно - из байтов в исходный объект.

import pickle
 
f = open("text.txt","w");
a = [1,2]
pickle.dump(a,f)
f.close()
 
f = open("text.txt","r");
a = pickle.load(f)
print(a)
f.close()

Содержимое файла выглядит странно:

(lp0
I1
aI2
a.

В третьей версии Python файл надо открывать в режимах 'rb', 'wb' или 'ab'.

Теги

Списки. Передача ссылки и передача копии

Если один список является вложенным в другой, то этого списка, через переменную, повлечет за собой его изменение в том списке, куда он был вложен. Во второй строке кода в b записывается не значение, связанное с a, а ссылка.

Теги

Как удалить элемент списка или вставить элемент в произвольное место

Допустим есть такой список:

>>> a = [1,2,3,4,5,6,7,8,9]

И мы хотим удалить из него элемент с индексом 3, имеющий значение 4. Если попытаться это сделать так:

>>> a[3] = []

, то получим совсем не то, что надо:

>>> a
[1, 2, 3, [], 5, 6, 7, 8, 9]

Другими словами, число 4 было заменено на пустой список.

Теги

Подсчет количества строк, слов и букв в текстовом файле

Скрипту должно передаваться имя текстового файла. Например, в среде Windows в командной строке команда выглядит так:

words.py test.txt

Без слова python впереди.

Скрипт считает количество строк, слов и символов в файле.

Теги

Программа "Поиск путей между точками по графам" (v.2)

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

Интерфейс программы (Tkinter)

 

Обработка исключений, создание класса исключения

class MyError(Exception):
    def __init__(self,text):
        MyError.txt = text
 
a = input("Input positive integer: ")
 
try:
    a = int(a)
    if a < 0:
        raise MyError("you give negative!") # возбуждает собственное исключение
except ValueError:
    print("Error type of value!")
except MyError:
    print(MyError.txt)
 
print(a)
class General: pass
class Specific1(General): pass
class Specific2(General): pass
 
def raiser0():
    x = General()
    raise x
 
def raiser1():
    x = Specific1()