列表
1、列表常用操作符:
- 等号操作符:
==
- 连接操作符
+
- 重复操作符
*
- 成员关系操作符
in
、not in
四个操作符用实际例子来介绍:
list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]
#等号操作符==只能用于判断两者的对象地址是否相同,不能判断两者的值是否相等
print(list1 == list2) # False(因为两者对象不同)
print(list1 == list3) # True(因为两者对象是相同的)
#列表之间相加或列表进行数乘其实就是在执行extend()函数
list4 = list1 + list2 # extend()
print(list4) # [123, 456, 456, 123]
list5 = list3 * 3
print(list5) # [123, 456, 123, 456, 123, 456]
list3 *= 3
print(list3) # [123, 456, 123, 456, 123, 456]
print(123 in list3) # True
print(456 not in list3) # False
#如何使得两个列表的值相加呢,有两个方法
#法一 用循环,比较简单就不展示了
#法二 用numpy.array()将列表转为ndarray,操作如下
import numpy as np
import operator#operator里的方法可以比较列表等对象里元素的值
list1 = [1,2,3,4]
list2 = [2,3,4,5]
list3 = [1,2,3,4]
operator.eq(list1,list3) #True
list4 = np.array(list1) +np.array(list2) #[3,5,7,9]
list11 = np.array(list1)
list22 = np.array(list2)
list33 = np.array(list4)
#列表转为ndarray后“+”被重写了,因此下面的这两行代码的效果相同
operator.eq(list11,list44) #[ True True True True]
list11==list33 #[ True True True True]
2、列表的其他方法:
(1)list.count(obj):用于统计某个元素在列表中出现的次数
(2)list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
(3)list.reverse()反向列表中的元素
字符串
1、python常用的转义字符:
转义字符 | 描述 |
---|---|
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\n | 换行 |
\t | 横向制表符(TAB) |
\r | 回车 |
2、原始字符串只需要在字符串前边加一个英文字母r
#不用字母r
print("C:\\Program Files\\Intel\\Wifi\\Help")
#在字符串前加字母r
print(r'C:\Program Files\Intel\Wifi\Help')
# C:\Program Files\Intel\Wifi\Help
3、python字符串格式化符号:
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串,用str()方法处理对象 |
%r | 格式化字符串,用rper()方法处理对象 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | 根据值的大小决定使用%f或%e |
%G | 作用同%g,根据值的大小决定使用%f或% |
print('%c' % 97) # a
print('%c %c %c' % (97, 98, 99)) # a b c
print('%d + %d = %d' % (4, 5, 9)) # 4 + 5 = 9
print("我叫 %s 今年 %d 岁!" % ('小明', 10)) # 我叫 小明 今年 10 岁!
print('%o' % 10) # 12
print('%x' % 10) # a
print('%X' % 10) # A
print('%f' % 27.658) # 27.658000
print('%e' % 27.658) # 2.765800e+01
print('%E' % 27.658) # 2.765800E+01
print('%g' % 27.658) # 27.658
text = "I am %d years old." % 22
print("I said: %s." % text) # I said: I am 22 years old..
print("I said: %r." % text) # I said: 'I am 22 years old.'
字典
1、可变类型与不可变类型
- 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。
- 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。
那么如何快速判断一个数据类型 X
是不是可变类型的呢?两种方法:
- 麻烦方法:用
id(X)
函数,对 X 进行某种操作,比较操作前后的id
,如果不一样,则X
不可变,如果一样,则X
可变。 - 便捷方法:用
hash(X)
,只要不报错,证明X
可被哈希,即不可变,反过来不可被哈希,即可变
[例子]
i = 1
print(id(i)) # 140732167000896
i = i + 2
print(id(i)) # 140732167000960
l = [1, 2]
print(id(l)) # 4300825160
l.append('Python')
print(id(l)) # 4300825160
- 整数
i
在加 1 之后的id
和之前不一样,因此加完之后的这个i
(虽然名字没变),但不是加之前的那个i
了,因此整数是不可变类型。 - 列表
l
在附加'Python'
之后的id
和之前一样,因此列表是可变类型。
[例子]
print(hash('Name')) # 7047218704141848153
print(hash((1, 2, 'Python'))) # 1704535747474881831
print(hash([1, 2, 'Python']))
# TypeError: unhashable type: 'list'
print(hash({1, 2, 3}))
# TypeError: unhashable type: 'set'
- 数值、字符和元组 都能被哈希,因此它们是不可变类型。
- 列表、集合、字典不能被哈希,因此它是可变类型。
2、字典的内置方法
dict.fromkeys(seq[, value])
用于创建一个新字典,以序列seq
中元素做字典的键,value
为字典所有键对应的初始值。
seq = ('name', 'age', 'sex')
dic1 = dict.fromkeys(seq)
print(dic1)
# {'name': None, 'age': None, 'sex': None}
dic2 = dict.fromkeys(seq, 10)
print(dic2)
# {'name': 10, 'age': 10, 'sex': 10}
dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
print(dic3)
# {'name': ('小马', '8', '男'), 'age': ('小马', '8', '男'), 'sex': ('小马', '8', '男')}
集合
1、集合的创建
1、在创建空集合的时候只能使用s = set()
,因为s = {}
创建的是空字典
2、直接把一堆元素用花括号括起来(重复元素会自动过滤)
3、使用set(value)工厂函数,把字符串或列表或元组转换成集合(代码如下)
【例子】
a = set('abracadabra')
print(a)
# {'r', 'b', 'd', 'c', 'a'}
b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b)
# {'Taobao', 'Lsgogroup', 'Google'}
c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c)
# {'Taobao', 'Lsgogroup', 'Google'}
set()函数的妙用:
【例子】去掉列表中重复的元素
list = [0,1,2,3,4,5,5,3,1]
#法一
temp = []
for item in list:
if item not in temp:
temp.append(item)
print(temp) # [0, 1, 2, 3, 4, 5]
#法二
a = set(list)
print(list(a)) # [0, 1, 2, 3, 4, 5]
2、集合的内置方法
set.add(elmnt)
用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
【例子】
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
# {'orange', 'cherry', 'banana', 'apple'}
fruits.add("apple")
print(fruits)
# {'orange', 'cherry', 'banana', 'apple'}
set.update(set)
用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
【例子】
x = {"apple", "banana", "cherry"}
y = {"google", "baidu", "apple"}
x.update(y)
print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}
y.update(["lsgo", "dreamtech"])
print(y)
# {'lsgo', 'baidu', 'dreamtech', 'apple', 'google'}
序列
在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持一些通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作