python基础(一)

一、基本数据类型和运算符

注意:所有语法都是基于python3

1. 数据类型

(1)数值类型

  • 整型:int,例如-5,5
  • 浮点型:float,例如3.125
  • 复数:complex,例如(-5+4j)

(2)字符串类型(str)

  • 单引号/双引号:指定字符串
  • 三引号:可以表示一个多行字符串
  • 转义字符 \ :在一行的末尾加 \,表示下一行的字符串是上一行的继续
  • len() 函数返回字符串的长度
  • strip() 方法删除开头和结尾的空白字符
  • lower() 返回小写的字符串
  • replace() 用另一段字符串来替换字符串
  • 用 in 或 not in 关键字检查字符串中是否存在特定短语或字符
  • 使用 + 运算符进行字符串联

使用format方法格式化字符串

"{} is a {}".format("This", "placeholder")
"{0} can be {1}".format("strings", "formatted")

关键字

"{name} wants to eat {food}".format(name="Bob", food="lasagna")

(3)序列类型

  • list
  • tuple
  • range

(4)映射类型(dict)

(5)集合类型(set)

(6)布尔值bool(boolean)
返回结果只能是True,False

(7)二进制类型

  1. bytes
  2. bytearray
  3. memoryview

注意:可以使用 type() 函数获取任何对象的数据类型

2. 数据类型的转换

  1. eval():把字符串数据类型转换成原本数据类型
  2. json.dumps():把python对象(诸如dict/list/tuple/string等数据结构)转换为字符串(编码)
  3. json.loads():把json化的字符串转换成对应的python对象(诸如dict/list/tuple/string等数据结构)(解码)
  4. json.dump() 和 json.load() 用于处理文件,来编码和解码JSON数据

3. 运算符

(1)算数运算符

加号(Plus) +
1 + 1  # => 2

减号(Minus)-
8 - 1  # => 7

乘号(Multipy) *
10 * 2  # => 20

乘方(Power)**
2 ** 4  # => 16

模/取余操作 %
7 % 3  # => 1

补充:
a. 操作符 /(真除法),无论接受任何类型,结果都会保持小数部分。

4 / 2 # => 2.0
4 / 2.0 # => 2.0
5 / 2 # => 2.5

b. 操作符 // (Floor除法),会截断余数直接返回一个整数,只有当接受类型中包含浮点型时,结果才会保留小数部分。

4 // 2 # => 2
5 // 2 # => 2
4 // 2.0 # => 2.0

c. 用括号强制改变算术的结合律

(1 + 3) * 2  # => 8

(2)比较运算符
相等判断用 ==

1 == 1  # => True
2 == 1  # => False

不等用 !=

1 != 1  # => False
2 != 1  # => True

更多的比较

1 < 10  # => True
1 > 10  # => False
2 <= 2  # => True
2 >= 2  # => True

比较可以串起来

1 < 2 < 3  # => True
2 < 3 < 2  # => False

(3)布尔值的操作或者叫逻辑运算
注意: “and” 和 “or” 是区分大小写的

True and False  # => False
False or True  # => True

注意布尔操作跟整数搅在一起的时候

0 and 2  # => 0
-5 or 0  # => -5
0 == False  # => True
2 == True  # => False
1 == True  # => True

用not来逻辑取反

not True  # => False
not False  # => True

任何的对象都可以在布尔值的上下文中使用,下面的值会被认为是false的:

- None
- zero of any numeric type (e.g., 0, 0L, 0.0, 0j)
- 任何数字类型的0 (比如, 0, 0L, 0.0, 0j)
- 空序列 (比如, '', (), [])
- 空的容器类型 (比如, {}, set())
- bool(0)  # => False
- bool("")  # => False

(4)位操作运算符
位运算符用于比较(二进制)数字

左移位(Left Shift)<<
2 << 2  # => 8
00000010向左移动2位:00001000 = 8(等效于右边加2个0,左边去2个0)

右移位(Right Shift)>>
与左移位相反

按位与(Bitwise AND)&
有1为1,都是0才为0

按位或(Bitwise OR)|
有1为1,都是0才为0

按位异或(Bit-wise XOR) ^
都是1或都是0返回0,否则返回1

按位取反(Bit-wise invert) ~
~ x = - (x+1)

(5)其他运算符

成员运算符 in,not in :用于测试序列是否在对象中出现,返回值是True,False

身份运算符is,is not:身份运算符用于比较对象之间的相当性。
None是一个对象

None  # => None

使用 “is” 进行对象和None的比较

"etc" is None  # => False
None is None  # => True

“is”符号用来,在比较基本类型的时候可能用处不大,不过用在对象的比较方面却是很有用的。

字符串也是可以相加的!

"Hello " + "world!"  # => "Hello world!"

不用 ‘+’ 号也能加

"Hello " "world!"  # => "Hello world!"

还可以相乘

"Hello" * 3  # => "HelloHelloHello"

字符串可以当成是字符组成的列表

"This is a string"[0]  # => 'T'

二、序列

python3中采用input() 用来获取控制台的输入。
input() 将所有输入作为字符串看待,返回字符串类型。

# 函数语法
input([prompt])
# 参数说明:
# prompt: 可选,字符串,可作为一个提示语。

实例:

print("How old are you?")
age=input() 
 # => 18
print("So ,you are %r old" %(age))  
 # => So ,you are 18 old

#类型转换
b = int(input()) 
123
type(b)
<type 'int'>

给变量赋值之前是不需要声明的

some_var = 5  # 一般约定使用下划线去给变量名分词 lower_case_with_underscores
some_var  # => 5

访问没有定义的变量会抛出异常

some_other_var  # Raises a name error

if可以作为表达式使用
跟 C语言中 ‘?:’ 三元操作符等价

"yahoo!" if 3 > 2 else 2  # => "yahoo!"

1. 列表

列表:符号[ ],一种有序和可更改的集合。允许重复的成员

定义一个空列表和一个非空的列表
li = []
other_li = [4, 5, 6]

append()向列表的尾部添加元素,不能追加多个元素

li.append(1)  # li is now [1]
li.append(2)  # li is now [1, 2]
li.append(4)  # li is now [1, 2, 4]
li.append(3)  # li is now [1, 2, 4, 3]

insert()在特定的索引(index)处插入元素

li.insert(1, 2)  # li is now [1, 2, 3, 4, 5, 6] again

extend()一次可以插入多个数据,只能放在结尾

li.extend(other_li)  # Now li is [1, 2, 3, 4, 5, 6]
注意: li的值变化了的

返回第1个满足条件的值的索引

li.index(2)  # => 1
li.index(7)  # 抛出ValueError,因为7不在列表里

pop()将元素从列表尾部移除

li.pop()  # => 3 and li is now [1, 2, 4]
li.append(3)  # li is now [1, 2, 4, 3] again.

使用 del 来删除任意元素

del li[2]  # li is now [1, 2, 3]

remove()指定删除某个值

li.remove(2)  # li is now [1, 3, 4, 5, 6]
li.remove(2)  # 抛出ValueError, 2已经不在列表里了

访问列表项

通过引用索引号来访问列表项:
li[0]  # => 1

使用 = 可以给已经初始化过的索引赋新值
li[0] = 42
li[0]  # => 42
li[0] = 1  # 注意: 设置回原先的值

访问最后1个元素
li[-1]  # => 3

访问越界的话会抛出 IndexError

li[4]  # Raises an IndexError

使用切片(slice)语法可以访问列表中的部分元素

li[start:end:step]

实例:

li[1:3]  # => [2, 4]
忽略开头
li[:3]  # => [1, 2, 4]
忽略结尾
li[2:]  # => [4, 3]
每隔2个元素选择1个
li[::2]  # =>[1, 4]
反转列表的拷贝
li[::-1]  # => [3, 4, 2, 1]

列表可以相加

li + other_li  # => [1, 2, 3, 4, 5, 6]
注意: li 和 for other_li 的值没有变化的

移除第一个满足条件的值

li.remove(2)  # li is now [1, 3, 4, 5, 6]
li.remove(2)  # 抛出ValueError, 2已经不在列表里了

用 “in” 来检查元素是否在列表中存在

1 in li  # => True

用 “len()” 来返回列表的长度

len(li)  # => 6

总结:Python列表函数&方法

序号函数及描述
1len(list)列表元素个数
2max(list)返回列表元素最大值
3min(list)返回列表元素最小值
4list(seq)将元组转换为列表
5list.append(obj)在列表末尾添加新的对象
6list.count(obj)统计某个元素在列表中出现的次数
7list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
8list.index(obj)从列表中找出某个值第一个匹配项的索引位置
9list.insert(index, obj)将对象插入列表
10list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
11list.remove(obj)移除列表中某个值的第一个匹配项
12list.reverse()反向列表中元素
13list.sort( key=None, reverse=False)对原列表进行排序
14list.clear()清空列表
15list.copy()复制列表

2. 元组

元组(Tuples) :符号( ),一种有序且不可更改的集合。允许重复的成员

tup = (1, 2, 3)
tup[0]  # => 1
tup[0] = 3  # 抛出TypeError异常

你可以在元组上做下面一些的列表操作

len(tup)  # => 3
tup + (4, 5, 6)  # => (1, 2, 3, 4, 5, 6)
tup[:2]  # => (1, 2)
2 in tup  # => True

你可以从元组(或列表) 取出变量

a, b, c = (1, 2, 3)  # a is now 1, b is now 2 and c is now 3
d, e, f = 4, 5, 6  # 你都可以省略括号
如果你不加括号的话,默认情况下会创建元组
g = 4, 5, 6  # => (4, 5, 6)
看一下,交换变量的值那是相当容易的
e, d = d, e  # d is now 5 and e is now 4

注意:元组里面只有一个元素,需要加逗

3. 字典

字典(Dictionary):符号{ },一个无序,可变和有索引的集合。没有重复的成员。用来存储属性名(key)和属性值(value)的

定义一个空字典和一个非空的字典
empty_dict = {}
filled_dict = {"one": 1, "two": 2, "three": 3}

用[]来查找属性的值(value)

filled_dict["one"]  # => 1

用"keys()"来返回所有key的列表

filled_dict.keys()  # => ["three", "two", "one"]

注意 - 字典key的顺序是不保证的

"values()"返回所有值(value)的列表

filled_dict.values()  # => [3, 2, 1]

注意 - 排序问题跟上面的类似

“items()” 返回所有的键值对(key-value)的元组组成的列表

filled_dicts.items()  # => [("one", 1), ("two", 2), ("three", 3)]

用"in"来判断某个属性名/某个键是否存在

"one" in filled_dict  # => True
1 in filled_dict  # => False

访问不存在的属性名/键的时候会抛出 KeyError

filled_dict["four"]  # KeyError

用"get()"方法可以避免 KeyError

filled_dict.get("one")  # => 1
filled_dict.get("four")  # => None

get支持当属性名/键不存在的时候返回1个设定的默认值

filled_dict.get("one", 4)  # => 1
filled_dict.get("four", 4)  # => 4
# 注意: filled_dict.get("four") 仍然是 => None
 (get 并不会设置字典的值)

为某个属性名/键赋值跟列表赋值的方式差不多

filled_dict["four"] = 4  # now, filled_dict["four"] => 4

总结:python中字典内置函数&方法

序号函数及描述
1len(dict)计算字典元素个数,即键的总数。
2str(dict)输出字典,以可打印的字符串表示。
3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
4radiansdict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值
5key in dict如果键在字典dict里返回true,否则返回false
6radiansdict.items()以列表返回可遍历的(键, 值) 元组数组
7radiansdict.keys()返回一个迭代器,可以使用 list() 来转换为列表
8radiansdict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9radiansdict.update(dict2)把字典dict2的键/值对更新到dict里
10radiansdict.values()返回一个迭代器,可以使用 list() 来转换为列表
11pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12popitem()随机返回并删除字典中的最后一对键和值。
13radiansdict.clear()删除字典内所有元素
14radiansdict.copy()返回一个字典的浅复制
15radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4. 集合

集合(set)一个无序和无索引的集合。没有重复的成员
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False

添加元素
语法格式如下:

>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}

还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

s.update( x )

移除元素
语法格式如下:

s.remove( x )
# 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

s.discard( x )
# 如果元素不存在,不会发生错误

s.pop()
随机删除集合中的一个元素

实例:

实例1:
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook")   # 不存在会发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>
实例2:
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")  # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}

两个集合间的运算

# 用 & 来取交集
other_set = {3, 4, 5, 6}
filled_set & other_set  # => {3, 4, 5}

# 用 | 取并集
filled_set | other_set  # => {1, 2, 3, 4, 5, 6}

# 用 - 来取差集
{1, 2, 3, 4} - {2, 3, 5}  # => {1, 4}

# 用 ^ 取对称差集
{1, 2, 3, 4} ^ {2, 3, 5}  # => {1, 4, 5}

判断左边的集合是不是右边的超集
{1, 2} >= {1, 2, 3}  # => False

判断左边的集合是不是右边的子集
{1, 2} <= {1, 2, 3}  # => True

清空集合

s.clear()

用in来判断元素在集合中是否存在

2 in filled_set  # => True
10 in filled_set  # => False

总结:python中集合内置函数

序号函数及描述
1add() 为集合添加元素
2clear() 移除集合中的所有元素
3copy() 拷贝一个集合
4difference() 返回多个集合的差集
5difference_update() 移除集合中的元素,该元素在指定的集合也存在。
6discard() 删除集合中指定的元素
7intersection() 返回集合的交集
8intersection_update() 返回集合的交集。
9isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
10issubset() 判断指定集合是否为该方法参数集合的子集。
11issuperset() 判断该方法的参数集合是否为指定集合的子集
12pop() 随机移除元素
13remove() 移除指定元素
14symmetric_difference() 返回两个集合中不重复的元素集合。
15symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
16union() 返回两个集合的并集
17update() 给集合添加元素
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值