Python第二节笔记(熟练掌握的暂不记录)

列表

1、列表常用操作符:

  • 等号操作符:==
  • 连接操作符 +
  • 重复操作符 *
  • 成员关系操作符 innot 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 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持一些通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值