欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python学习笔记——基础

程序员文章站 2022-06-15 19:29:39
...

python学习笔记——基础


input()print()使用

name = input('please enter your name:')
print('helllo,', name)
please enter your name:lishangfeng
helllo, lishangfeng

input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。

python提供了int()函数来完成这件事。

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')
birth: 2009
00后

转义符 \使用

print('I\'m \"OK\"!')
I'm "OK"!
print(r'''hello,\n
world''')
hello,\n
world
print('''hello,\n
world''')
hello,

world

字符编码:参看 廖雪峰教程

python字符串

python3,字符串是以unicode编码

list

python内置的一种数据类型,list是一种有序的集合,可以随时添加和删除其中的元素。

len() 函数可以获得list元素的个数;

用索引访问list中每一个位置的元素,索引是从0开始的。

当索引超出范围时,python会报IndexError错误,要确保索引不要越界,最后 一个元素的索引是len(classmates) - 1

获取最后一个元素,除计算索引位置外,可用-1做索引,直接获取最后有一个元素:

classmates = ['forsch','juan','sysrch'] #定义一个list classmates
print(classmates)
print(len(classmates))
print(classmates[0])
print(classmates[1])
print(classmates[2])
print(classmates[3])
['forsch', 'juan', 'sysrch']
3
forsch
juan
sysrch



---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-37-7b183be0cfed> in <module>()
      5 print(classmates[1])
      6 print(classmates[2])
----> 7 print(classmates[3])


IndexError: list index out of range
print(classmates[-1])
sysrch
print(classmates[-2])
juan
print(classmates[-3])
forsch
print(classmates[-4])
---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-41-699b6e2a7bd6> in <module>()
----> 1 print(classmates[-4])


IndexError: list index out of range

list是一个可变的有序表,所以可以往list中追加元素到末尾,使用append()

classmates.append('juney')
print(classmates)
['forsch', 'juan', 'sysrch', 'juney']

也可以把元素插入到指定的位置,比如索引号为2的位置,使用insert()

classmates.insert(2, 'jhon')
print(classmates)
['forsch', 'juan', 'jhon', 'sysrch', 'juney']

删除list末尾的元素,使用pop()方法:

print(classmates.pop())
print(classmates)
juney
['forsch', 'juan', 'jhon', 'sysrch']

删除指定位置的元素,用pop(i)方法,i是索引位置:

print(classmates.pop(1))
print(classmates)
juan
['forsch', 'jhon', 'sysrch']

若要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

classmates[0] = 'root'
print(classmates)
['root', 'jhon', 'sysrch']

list 里面的元素的数据类型可以不同;

list元素也可以是另一个list;

L = ['Apple', 123, True]

s = ['python', 'java', ['asp','php'],'scheme']
print(len(s))

#获取 'php';s可看作一个二维数组
print(s[2][1])
4
php

若list中一个元素都没有,就是一个空的List,它的长度为0:

L = []
print(len(L))
0

tuple

元组:tuple,tuple和list非常相似,但,tuple一旦被初始化就不能修改

classmates = ('forsch', 'michle', 'junny')

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义

t = (1,)
t
(1,)

“可变的”tuple

t = ('a', 'b', ['A', 'B'])
print(t)
t[2][0] = 'X'
t[2][1] = 'Y'
print(t)
('a', 'b', ['A', 'B'])
('a', 'b', ['X', 'Y'])

uple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的


循环

range()函数,可以生成一个整数序列,再通过list()函数可以转换为list.

sum = 0
for x in list(range(5)):
    sum = sum + x
print(sum)
10

while循环,只要满足条件,就不断循环,条件不满足时退出循环。eg:计算100以内所有奇数之和,可用while循环实现:

sum =0
n = 99
while n > 0:
    sum = sum +n
    n = n - 2
print(sum)
2500

break语句,在循环中可以提前退出循环。

n = 1
while n <= 100:
    if n > 10:
        break
    print(n)
    n = n + 1
print('END')
1
2
3
4
5
6
7
8
9
10
END

continue语句,跳过当前的这次循环,直接开始下一次循环

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: #如果n是偶数,执行continue语句
        continue #continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)
1
3
5
7
9

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。

要特别注意,不要滥用breakcontinue语句。breakcontinue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到breakcontinue语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉breakcontinue语句。


dict

dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

d = {'sunny': 98, 'forsch': 93, 'lucy': 85}
print(d['forsch'])
print(d)
93
{'sunny': 98, 'forsch': 93, 'lucy': 85}

把数据放入dict的方法,除了初始化时指定外,还可通过key放入:

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

d['forsch'] = 100
print(d['forsch'])
100
d['forsch'] = 0
print(d['forsch'])
0

判断 key 是否存在

  • 通过in判断

  • 通过get()方法,若key不存在,返回None,或者自己指定的value;(返回None时,python的交互环境不显示结果)

'tony' in d
False
d.get('tony')
d.get('tony', -1)
-1

删除key,用pop(key)方法,对应的value也会从dict中删除:

d.pop('forsch')
print(d)
{'sunny': 98, 'lucy': 85}

dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量的内存,内存浪费多。

而list相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:


set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:

s = set([1, 2, 3])
s
{1, 2, 3}

传入的参数[1, 2, 3]是一个list,而显示的{1,2,3}只是告诉你这个set内部有1,2, 3这3个元素,显示的顺序也不表示set是有序。

重复元素在set中自动被过滤:

s = set([1, 1, 2, 2, 3, 3])
s
{1, 2, 3}

添加元素到set中
通过add(key)方法可以添加元素到set中,可重复添加,但不会有效果:

s.add(4)
s
{1, 2, 3, 4}
s.add(4)
s
{1, 2, 3, 4}

删除元素 可通过remove(key)方法删除元素:

s.remove(4)
s
{1, 2, 3}

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2)
print('-------------')
print(s1 | s2)
{2, 3}
-------------
{1, 2, 3, 4}

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

不可变对象

str是不可变对象,list是可变对象

对于可变对象,比如list,对list进行操作,list内部的内容是会变化的

a = ['c', 'b', 'a']
a.sort()
a
['a', 'b', 'c']

对不可变对象,如str

a = 'abc'
b = a.replace('a', 'A')
print(a)
print(b)
abc
Abc
相关标签: python