Python——第2章 数据类型、运算符与内置函数

news2024/12/25 16:59:10

目录

1 赋值语句

2 数据类型

2.1 常用内置数据类型

2.1.1  整数、实数、复数

2.1.2  列表、元组、字典、集合

 2.1.3  字符串

2.2  运算符与表达式

2.2.1  算术运算符 

2.2.2  关系运算符

2.2.3  成员测试运算符

2.2.4  集合运算符

2.2.5  逻辑运算符

2.3  常用内置函数

2.3.1  类型转换

2.3.2  最大值、最小值

2.3.3  元素数量、求和

2.3.4  排序、逆序 

2.3.5  基本输入输出

2.3.6  range()

2.3.7  zip() 

2.3.8  map()、reduce()、filter()


1 赋值语句

格式:变量名=数据

x=2 
x=y=2   #多个变量同时具有相同的值,id(x)查看变量的内存地址 
x,y=1,2  #多个变量同时具有不相同的值 x,y=y,x  #变量交换

2 数据类型

整数类型、字符串类型、列表类型

2.1 常用内置数据类型

2.1.1  整数、实数、复数

import math
print(math.factorial(32))               # 计算32的阶乘
print(0.4-0.3 == 0.1)                   # 实数之间尽量避免直接比较大小
print(math.isclose(0.4-0.3, 0.1))       # 测试两个实数是否足够接近
num = 7
squreRoot = num ** 0.5                  # 计算平方根
print(squreRoot**2 == num)
print(math.isclose(squreRoot**2, num))
---------------------------------------
263130836933693530167218012160000000
False
True
False
True
c = 3+4j                                # Python内置支持复数及其运算
print(c+c)                              # 复数相加
print(c**2)                             # 幂运算
print(c.real)                           # 查看复数的实部
print(c.imag)                           # 查看复数的虚部
print(3+4j.imag)                        # 相当于3+(4j).imag
print(c.conjugate())                    # 查看共轭复数
print(abs(c))                           # 计算复数的模
------------------------------------
(6+8j)
(-7+24j)
3.0
4.0
7.0
(3-4j)
5.0

2.1.2  列表、元组、字典、集合

列表、元组、字典、集合是Python内置的容器对象。 

# 创建列表对象
x_list = [1, 2, 3]
# 创建元组对象
x_tuple = (1, 2, 3)
# 创建字典对象,元素形式为“键:值”
x_dict = {'a':97, 'b':98, 'c':99}
# 创建集合对象
x_set = {1, 2, 3}

# 使用下标访问列表中指定位置的元素,元素下标从0开始
print(x_list[1])
# 元组也支持使用序号作为下标,1表示第二个元素的下标
print(x_tuple[1])
# 访问字典中特定“键”对应的“值”,字典对象的下标是“键”
print(x_dict['a'])
# 查看列表长度,也就是其中元素的个数
print(len(x_list))
# 查看元素2在元组中首次出现的位置
print(x_tuple.index(2))
# 查看字典中哪些“键”对应的“值”为98
for key, value in x_dict.items():
    if value == 98:
        print(key)
# 查看集合中元素的最大值
print(max(x_set))
----------------------------------
2
2
97
3
1
b
3

 2.1.3  字符串

在字符串前面加上英文字母r或R表示原始字符串,其中每个字符都表示字母含义,不再进行转义。如果字符串中含有反斜线“\”,建议在字符串前面直接加上字母r使用原始字符串。

text = '''Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.'''

print(len(text))                 # 字符串长度,即所有字符的数量
print(text.count('is'))          # 字符串中单词is出现的次数
print('beautiful' in text)       # 测试字符串中是否包含单词beautiful
print('='*20)                    # 字符串重复
print('Good '+'Morning')         # 字符串连接
---------------------------------------
208
6
False
====================
Good Morning

2.2  运算符与表达式

2.2.1  算术运算符 

(1)+运算符

+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接。

print(3 + 5)
print(3.4 + 4.5)
print((3+4j) + (5+6j))
print('abc' + 'def')
print([1,2] + [3,4])
print((1,2) + (3,))
------------------------------
8
7.9
(8+10j)
abcdef
[1, 2, 3, 4]
(1, 2, 3)

(2)-运算符

-运算符除了用于整数、实数、复数之间的算术减法和相反数之外,还可以计算集合的差集。需要注意的是,在进行实数之间的运算时,有可能会出现误差。 

print(7.9 - 4.5)                    # 注意,结果有误差
print(5 - 3)
num = 3
print(-num)
print(--num)                        # 注意,这里的--是两个负号,负负得正
print(-(-num))                      # 与上一行代码含义相同
print({1,2,3} - {3,4,5})            # 计算差集
print({3,4,5} - {1,2,3})
--------------------------------------
3.4000000000000004
2
-3
3
3
{1, 2}
{4, 5}

 (3)*运算符

*运算符除了表示整数、实数、复数之间的算术乘法,还可用于列表、元组、字符串这几个类型的对象与整数的乘法,表示序列元素的重复,生成新的列表、元组或字符串。 

print(33333 * 55555)
print((3+4j) * (5+6j))
print('重要的事情说三遍!' * 3)
print([0] * 5)
print((0,) * 3)
--------------------------------------
1851814815
(-9+38j)
重要的事情说三遍!重要的事情说三遍!重要的事情说三遍!
[0, 0, 0, 0, 0]
(0, 0, 0)

(4)运算符/和//

在Python中分别表示真除法和求整商。在使用时,要特别注意整除运算符//“向下取整”的特点。例如,-17 / 4的结果是-4.25,在数轴上小于-4.25的最大整数是-5,所以-17 // 4的结果是-5。

print(17 / 4)
print(17 // 4)
print((-17) / 4)
print((-17) // 4)
--------------------------
4.25
4
-4.25
-5

(5)%运算符

%运算符可以用于求余数运算,还可以用于字符串格式化。在计算余数时,结果与%右侧的运算数符号一致。

print(365 % 7)
print(365 % 2)
print('%c,%c, %c' % (65, 97, 48))   # 把65、97、48格式化为字符
---------------------------------------
1
1
A,a, 0

(6)**运算符

**运算符表示幂运算。使用时应注意,该运算符具有右结合性,也就是说,如果有两个连续的**运算符,那么先计算右边的再计算左边的,除非使用圆括号明确修改表达式的计算顺序。

print(2 ** 4)
print(3 ** 3 ** 3)
print(3 ** (3**3))           # 与上一行代码含义相同
print((3**3) ** 3)           # 使用圆括号修改计算顺序
print(9 ** 0.5)              # 计算9的平方根
print((-1) ** 0.5)           # 对复数计算平方根得到复数
--------------------------------------
16
7625597484987
7625597484987
19683
3.0
(6.123233995736766e-17+1j)

2.2.2  关系运算符

print(3+2 < 7+8)                          # 关系运算符优先级低于算术运算符
print(3 < 5 > 2)                          # 等价于3<5 and 5>2
print(3 == 3 < 5)                         # 等价于3==3 and 3<5
print('12345' > '23456')                  # 第一个字符'1'<'2',直接得出结论
print('abcd' > 'Abcd')                    # 第一个字符'a'>'A',直接得出结论
print([85, 92, 73, 84] < [91, 82, 73])    # 第一个数字85<91,直接得出结论
print([180, 90, 101] > [180, 90, 99])     # 前两个数字相等,第三个数字101>99
print({1, 2, 3, 4} > {3, 4, 5})           # 第一个集合不是第二个集合的超集
print({1, 2, 3, 4} <= {3, 4, 5})          # 第一个集合不是第二个集合的子集
print([1, 2, 3, 4] > [1, 2, 3])           # 前三个元素相等
                                          # 并且第一个列表有多余的元素
----------------------------------
True
True
True
False
True
True
True
False
False
True

2.2.3  成员测试运算符

print(60 in [70, 60, 50, 80])
print('abc' in 'a1b2c3dfg')
print([3] in [[3], [4], [5]])
print('3' in map(str, range(5)))
print(5 in range(5))
-----------------------------------
True
False
True
True
False

2.2.4  集合运算符

A = {35, 45, 55, 65, 75}
B = {65, 75, 85, 95}
print(A | B)
print(A & B)
print(A - B)
print(B - A)
print(A ^ B)
------------------------------
{65, 35, 75, 45, 85, 55, 95}
{65, 75}
{35, 45, 55}
{85, 95}
{35, 45, 85, 55, 95}

2.2.5  逻辑运算符

计算结果只要不是0、0.0、0j、None、False、空列表、空元组、空字符串、空字典、空集合、空range对象或其他空的容器对象,都被认为等价于True。

print(3 in range(5) and 'abc' in 'abcdefg')
print(3-3 or 5-2)
print(not 5)
print(not [])
-------------------------------------------
True
3
False
True

2.3  常用内置函数

在Python程序中,可以直接使用内置函数,不需要导入任何模块。

使用语句print(dir(__builtins__))可以查看所有内置函数和内置对象,注意builtins两侧各有两个下划线,一共4个。

2.3.1  类型转换

(1)int()、float()、complex()

print(int(3.5))                 # 获取实数的整数部分
print(int('119'))               # 把整数字符串转换为整数
print(int('1111', 2))           # 把1111看作二进制数,转换为十进制数
print(int('1111', 8))           # 把1111看作八进制数,转换为十进制数
print(int('1111', 16))          # 把1111看作十六进制数,转换为十进制数
print(int('  9\n'))             # 自动忽略字符串两个的空白字符
print(float('3.1415926'))       # 把字符串转换为实数
print(float('-inf'))            # 负无穷大
print(complex(3, 4))            # 复数
print(complex(6j))
print(complex('3'))
----------------------------------------------
3
119
15
585
4369
9
3.1415926
-inf
(3+4j)
6j
(3+0j)

(2)bin()、oct()、hex()

print(bin(8888))              # 把整数转换为二进制
print(oct(8888))              # 把整数转换为八进制
print(hex(8888))              # 把整数转换为十六进制
-------------------------------------------
0b10001010111000
0o21270
0x22b8
1

(3)ord()、chr()、str() 

print(ord('a'))               # 返回字符的ASCII码
print(ord('董'))              # 返回汉字字符的Unicode编码
print(chr(65))                # 返回指定ASCII码对应的字符
print(chr(33891))             # 返回指定Unicode编码对应的汉字
print(str([1, 2, 3, 4]))      # 把列表转换为字符串
print(str({1, 2, 3, 4}))      # 把集合转换为字符串
----------------------------------------------------
97
33891
A
董
[1, 2, 3, 4]
{1, 2, 3, 4}

(4)list()、tuple()、dict()、set()

print(list(), tuple(), dict(), set())  
s = {3, 2, 1, 4}
print(list(s), tuple(s))
lst = [1, 1, 2, 2, 3, 4]
# 在转换为集合时会自动去除重复的元素
print(tuple(lst), set(lst))
# list()会把字符串中每个字符都转换为列表中的元素
# tuple()、set()函数也具有类似的特点
print(list(str(lst)))
print(dict(name='Dong', sex='Male', age=41))
---------------------------------------------
[] () {} set()
[1, 2, 3, 4] (1, 2, 3, 4)
(1, 1, 2, 2, 3, 4) {1, 2, 3, 4}
['[', '1', ',', ' ', '1', ',', ' ', '2', ',', ' ', '2', ',', ' ', '3', ',', ' ', '4', ']']
{'name': 'Dong', 'sex': 'Male', 'age': 41}

(5)eval()

  • 计算字符串或字节串的值
  • 实现类型转换的功能
  • 还原字符串中数据的实际类型
print(eval('3+4j'))              # 对字符串求值得到复数
print(eval('8**2'))              # 计算表达式8**2的值
print(eval('[1, 2, 3, 4, 5]'))   # 对字符串形式求值得到列表
print(eval('{1, 2, 3, 4}'))      # 对字符串求值得到集合
---------------------------------------------------
(3+4j)
64
[1, 2, 3, 4, 5]
{1, 2, 3, 4}

2.3.2  最大值、最小值

data = [3, 22, 111]
print(data)
# 对列表中的元素直接比较大小,输出最大元素
print(max(data))
print(min(data))
# 返回转换成字符串之后最大的元素
print(max(data, key=str))
data = ['3', '22', '111']
print(max(data))
-------------------------------------------
[3, 22, 111]
111
3
3
3
# 返回长度最大的字符串
print(max(data, key=len))
data = ['abc', 'Abcd', 'ab']
# 最大的字符串
print(max(data))
# 长度最大的字符串
print(max(data, key=len))
# 全部转换为小写之后最大的字符串
print(max(data, key=str.lower))
data = [1, 1, 1, 2, 2, 1, 3, 1]
------------------------------------
111
abc
Abcd
Abcd
# 出现次数最多的元素
# 也可以查阅资料使用标准库collections中的Counter类实现
print(max(set(data), key=data.count))
# 最大元素的位置,列表方法__getitem__()用于获取指定位置的值
print(max(range(len(data)), key=data.__getitem__))
----------------------------------------------------------
1
6

2.3.3  元素数量、求和

data = [1, 2, 3, 4]
# 列表中元素的个数
print(len(data))
# 所有元素之和
print(sum(data))
data = (1, 2, 3)
print(len(data))
print(sum(data))
---------------------
4
10
3
6
data = {1, 2, 3}
print(len(data))
print(sum(data))
data = 'Readability counts.'
print(len(data))
data = {97: 'a', 65: 'A', 48: '0'}
print(len(data))
print(sum(data))
------------------------------------
3
6
19
3
210

2.3.4  排序、逆序 

(1)sorted

sorted()可以对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表,支持使用key参数指定排序规则,key参数的值可以是函数、类、lambda表达式、方法等可调用对象。

另外,还可以使用reverse参数指定是升序(reverse=False)排序还是降序(reverse=True) 排序,如果不指定的话默认为升序排序。

from random import shuffle

data = list(range(20))
shuffle(data)                  # 随机打乱顺序
print(data)
print(sorted(data))            # 升序排序
print(sorted(data, key=str))   # 按转换成字符串后的大小升序排序
print(sorted(data, key=str,    # 按转换成字符串后的大小
             reverse=True))    # 降序排序
----------------------------------------------------------------------
[5, 3, 0, 10, 1, 11, 8, 2, 9, 13, 16, 6, 17, 19, 15, 7, 12, 4, 14, 18]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 1, 0]

(2)reversed

reversed()可以对可迭代对象(生成器对象和具有惰性求值特性的zip、map、filter、enumerate、reversed等类似对象除外)进行翻转并返回可迭代的reversed对象。

在使用时应注意,reversed对象具有惰性求值特点,其中的元素只能使用一次,并且不支持使用内置函数len()计算元素个数,也不支持使用内置函数reversed()再次翻转。

from random import shuffle

data = list(range(20))        # 创建列表
shuffle(data)                 # 随机打乱顺序
print(data)
reversedData = reversed(data) # 生成reversed对象
print(reversedData)
print(list(reversedData))     # 根据reversed对象得到列表
print(tuple(reversedData))    # 空元组,reversed对象中元素只能使用一次
--------------------------------------------------------------------------
[3, 19, 6, 17, 11, 5, 18, 15, 8, 1, 12, 7, 16, 4, 14, 10, 0, 9, 13, 2]
<list_reverseiterator object at 0x000001B79034F700>
[2, 13, 9, 0, 10, 14, 4, 16, 7, 12, 1, 8, 15, 18, 5, 11, 17, 6, 19, 3]
()

2.3.5  基本输入输出

(1)内置函数input

内置函数input()用来接收用户的键盘输入,不论用户输入什么内容,input()一律作为字符串对待,必要的时候可以使用内置函数int()、float()或eval()对用户输入的内容进行类型转换。

num = int(input('请输入一个大于2的自然数:'))
# 对2的余数为1的整数为奇数,能被2整除的整数为偶数
if num%2 ==1:
    print('这是个奇数。')
else:
    print('这是个偶数。')

lst = eval(input('请输入一个包含包含若干大于2的自然数的列表:'))
print('列表中所有元素之和为:', sum(lst))
-----------------------------------------------------------------
请输入一个大于2的自然数:6
这是个偶数。
请输入一个包含包含若干大于2的自然数的列表:[4,7,8,9]
列表中所有元素之和为: 28

(2)内置函数print

内置函数print()用于以指定的格式输出信息,语法格式为:

print(value1, value2, ..., sep=' ', end='\n')

其中,sep参数之前为需要输出的内容(可以有多个);sep参数用于指定数据之间的分隔符,如果不指定则默认为空格;end参数表示输出完所有数据之后的结束符,如果不指定则默认为换行符。

print(1, 2, 3, 4, 5)            # 默认情况,使用空格作为分隔符
print(1, 2, 3, 4, 5, sep=',')   # 指定使用逗号作为分隔符
print(3, 5, 7, end=' ')         # 输出完所有数据之后,以空格结束,不换行
print(9, 11, 13)
--------------------------------------------------
1 2 3 4 5
1,2,3,4,5
3 5 7 9 11 13

2.3.6  range()

range([start,] stop [,step])

其中,参数start默认为0,step默认为1,左开右闭区间[start,stop)

  • range(stop)
  • range(start,stop)
  • range(start,stop,step)
range1 = range(4)           # 只指定stop为4,start默认为0,step默认为1
range2 = range(5, 8)        # 指定start=5和stop=8,step默认为1
range3 = range(3, 20, 4)    # 指定start=3、stop=20和step=4
range4 = range(20, 0, -3)   # step也可以是负数
print(range1, range2, range3, range4)
print(range4[2])
print(list(range1), list(range2), list(range3), list(range4))
for i in range(10):
    print(i, end=' ')
------------------------------------------------------------------
range(0, 4) range(5, 8) range(3, 20, 4) range(20, 0, -3)
14
[0, 1, 2, 3] [5, 6, 7] [3, 7, 11, 15, 19] [20, 17, 14, 11, 8, 5, 2]
0 1 2 3 4 5 6 7 8 9 

2.3.7  zip() 

zip()用来把多个可迭代对象中对应位置上的元素分别组合到一起,返回一个可迭代的zip对象,其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。

zip对象中的每个元素只能使用一次,访问过的元素不可再次访问,并且只能从前往后逐个访问zip对象中的元素,不能使用下标直接访问指定位置上的元素。

data = zip('1234', [1, 2, 3, 4, 5, 6])
print(data)
# 在转换为列表时,使用了zip对象中的全部元素,zip对象中不再包含任何内容
print(list(data))
# 如果需要再次访问其中的元素,必须重新创建zip对象
data = zip('1234', [1, 2, 3, 4, 5, 6])
print(tuple(data))
data = zip('1234', [1, 2, 3, 4, 5, 6])
# zip对象是可迭代的,可以使用for循环逐个遍历和访问其中的元素
for item in data:
    print(item)
---------------------------------------------------------
<zip object at 0x000001B790734940>
[('1', 1), ('2', 2), ('3', 3), ('4', 4)]
(('1', 1), ('2', 2), ('3', 3), ('4', 4))
('1', 1)
('2', 2)
('3', 3)
('4', 4)

2.3.8  map()、reduce()、filter()

(1)map()

map(func,*iterables)

map()函数把一个可调用对象func 依次映射到序列的每个元素上,并返回一个可选代的 map对象,其中每个元素是原序列中元素经过可调用对象func处理后的结果,该函数不对原序列做任何修改。 该函数返回的map对象可以转换为列表、元组或集合,也可以直接使用for 循环遍历其中的元素, 但是map对象中的每个元素只能使用一次。

from operator import add

print(map(str, range(5)))
print(list(map(str, range(5))))
print(list(map(len, ['abc', '1234', 'test'])))
# 使用operator标准库中的add运算add运算相当于运算符+
# 如果map()函数的第一个参数func能够接收两个参数,则可以映射到两个序列上
for num in map(add, range(5), range(5,10)):
    print(num)
--------------------------------------------------
<map object at 0x000001B79034F400>
['0', '1', '2', '3', '4']
[3, 4, 4]
5
7
9
11
13

(2)reduce()

reduce(func,seq[,initial])

reduce()可以将一个接收2个参数的函数以迭代的方式从左到右依次作用到一个序列或可迭代对象的所有元素上,并且每一次计算的中间结果直接参与下一次计算,最终得到一个值。

from functools import reduce
from operator import add, mul, or_

seq = range(1, 10)
print(reduce(add, seq))       # 累加seq中的数字
print(reduce(mul, seq))       # 累乘seq中的数字
seq = [{1}, {2}, {3}, {4}]
print(reduce(or_, seq))       # 对seq中的集合连续进行并集运算
-------------------------------------------------------
45
362880
{1, 2, 3, 4}

(3)filter()

filter(func or None, iterable)

过滤。将一个函数func作用到一个序列上,返回一个filter对象,其中包含原序列中使得函数func返回值等价于True的那些元素。每个元素只能使用一次。

seq = ['abcd', '1234', '.,?!', '']
print(list(filter(str.isdigit, seq)))   # 只保留数字字符串
print(list(filter(str.isalpha, seq)))   # 只保留英文字母字符串
print(list(filter(str.isalnum, seq)))   # 只保留数字字符串和英文字符串
print(list(filter(None, seq)))          # 只保留等价于True的元素
------------------------------------------------------
['1234']
['abcd']
['abcd', '1234']
['abcd', '1234', '.,?!']

 来自书籍:《Python数据分析、挖掘与可视化》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/441379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes 笔记(15)— 应用保障、容器资源配额、容器状态探针概念及使用

作为 Kubernetes 里的核心概念和原子调度单位&#xff0c;Pod 的主要职责是管理容器&#xff0c;以逻辑主机、容器集合、进程组的形式来代表应用&#xff0c;它的重要性是不言而喻的。 在上层 API 对象的基础上&#xff0c;一起来看看在 Kubernetes 里配置 Pod 的两种方法&…

dell t630服务器风扇控制笔记记录(耗时一天)

1、打开虚拟控制台得用IE&#xff1b; 2、Dell PowerEdge T640 加装显卡之后风扇狂转问题解决 - 知乎 感谢知乎Billy&#xff0c; 操作步骤&#xff1a; 1、查看iDrac版本&#xff0c;必须在3.30.30.30及以下&#xff0c;之后的版本关闭了手动控制风扇转速的权限&#xff0…

从视图树到GPU:探索Android渲染机制

简介 在 Android 中&#xff0c;渲染技术可以分为 CPU 渲染和 GPU 渲染两种方式。CPU 渲染是直接使用 CPU 处理数据&#xff0c;并将其显示在屏幕上&#xff0c;而 GPU 渲染则是将数据传递给 GPU 进行处理和显示。 具体的渲染技术如下&#xff1a; Canvas绘图&#xff1a;An…

多层感知器介绍

一、概览 现实世界中很多真实的问题都不是线性可分的&#xff0c;即无法使用一条直线、平面或者超平面分割不同的类别&#xff0c;其中典型的例子是异或问题&#xff08;Exclusive OR&#xff0c;XOR&#xff09;&#xff0c;即假设输入为x1和x2&#xff0c;如果它们相同&…

Linux远程访问及控制SSH命令

目录 一. SSH服务1.1 SSH基础1.1.1什么是SSH服务器&#xff1f;1.1.2SSH优点1.1.3常见的ssh协议 二. 服务端配置文件常用选项2.1设置白名单2.2设置黑名单 三. SSH服务的两种验证方式3.1 公钥与私钥的关系 四. ssh客户端程序4.1ssh远程登录4.2 scp 远程复制4.3 sftp 安全的ftp 五…

Direct3D 12——计算着色器——计算着色器概念

计算着色器虽然是一种可编程的着色器&#xff0c;但Direct3D并没有将它直接归为渲染流水线中的一部分。虽然如此&#xff0c;但位于流水线之外的计算着色器却可以读写GPU资源。从本质上来说&#xff0c;计算着 色器能够使我们访问GPU来实现数据并行算法&#xff0c;而不必渲染出…

ESP32设备驱动-BH1745NUC 亮度和颜色传感器驱动

BH1745NUC 亮度和颜色传感器驱动 文章目录 BH1745NUC 亮度和颜色传感器驱动2、硬件准备3、软件准备4、驱动实现BH1745NUC 是具有 IC 总线接口的数字颜色传感器 IC。 该 IC 感应红光、绿光和蓝光 (RGB) 并将它们转换为数字值。 高灵敏度、宽动态范围和出色的 Ircut 特性使该 IC …

【CSS3】CSS3 伪元素字体图标 ( 生成 icommon 字体文件 | 字体图标基本使用 | 使用伪元素实现 icommon 字体图标显示 )

文章目录 一、icommon 字体图标基本使用1、生成 icommon 字体文件2、字体图标基本使用 二、使用伪元素实现 icommon 字体图标显示 一、icommon 字体图标基本使用 字体图标 指的是 将图标做成字体样式 , 在 放图标的地方 使用 文字 即可实现 图标显示 ; 1、生成 icommon 字体文件…

Vue2-黑马(十三)

目录&#xff1a; &#xff08;1&#xff09;实战-permissions.js-动态路由 &#xff08;2&#xff09;实战-第三方登录-流程分析 &#xff08;3&#xff09;实战-第三方登录-代码解读 &#xff08;1&#xff09;实战-permissions.js-动态路由 在做根据用户角色动态生成路由…

【Unity+MySQL】实现注册登录系统(升级版)

目录 1 UI界面重新设计1.1 注册界面1.2 登录界面1.3 交互实现 2 注册功能完善2.1 判断用户输入的用户名是否与数据库中的重复2.2 将当前时间更新至用户表的当前注册时间列2.3 将用户输入的注册密码使用哈希加密 3 登录功能完善 接着 上篇文章所谈到的系统缺陷&#xff0c;这篇…

==与equals()的理解

java中的数据类型分为基本数据类型、基本数据类型对应的包装类型&#xff08;引用类型&#xff09;&#xff0c;引用类型三种数据类型。 每一个基本类型java都提供了一个与之对应的包装类型&#xff0c;该包装类型是一个引用类型,并且在基本类型与包装类型之间提供了自动拆箱和…

AD21原理图----网络连线(网络线、网络标签、总线、差分对、信号线束)

目录 网络连线 网络线&#xff08;Wire&#xff09; 网络标签 总线 差分对 信号线束 网络连线 网络线&#xff08;Wire&#xff09; 网络标签 可以跨原理图 总线 用于放置同一类数据 使用步骤 第一步&#xff1a;先绘制网络线 第二步&#xff1a;利用网络标签进行连接&a…

虚拟机下Ubuntu系统的Docker部署

虚拟机下Ubuntu系统的微服务项目Docker部署 文章目录 虚拟机下Ubuntu系统的微服务项目Docker部署1、Ubuntu安装 Docker2、修改后端微服务的配置2.1 修改 MySQL 的配置2.2 修改 Redis 的配置2.3 修改 Nacos 的配置 3、生成微服务镜像4、拉取远程镜像5、生成前端镜像5.1 准备文件…

MacOS安装MongoDB与Redis

1.安装MongoDB: brew tap mongodb/brew brew install mongodb-community 后台服务方式运行mongodb: brew services restart mongodb/brew/mongodb-community 直接运行mongodb非后台服务 /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.con…

化工行业数字化“智能工厂”-解决方案(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 总体架构 设计理念—数据集成与流转 九大核心价值之一 九大核心价值之二 九大核心价值之三 九大核心价值之四 九大核心价值之五 九大核心价值之六 九大核心价值之七 九大核心…

数据库学习-常用的SQL语句

背景&#xff1a; 汇整一下自己学习数据库过程中常见的题目及语句。 一.实例分析题 二&#xff0e;简单SQL查询&#xff1a; 1&#xff09;:统计每个部门员工的数目select dept,count(*) from employee group by dept;2&#xff09;:统计每个部门员工的数目大于一个的记录se…

3.4 迭代法

4.1 雅克比迭代法&#xff1a; 雅可比迭代法是一种用于求解线性方程组的迭代算法&#xff0c;其基本思想是将线性方程组中的系数矩阵拆分为对角线矩阵和非对角线矩阵两部分&#xff0c;并利用对角线矩阵的逆矩阵来迭代求解方程组。 具体地&#xff0c;设线性方程组为Axb&…

操作系统笔记--虚拟内存的使用

1--背景概念 在计算机系统中&#xff0c;当多道程序同时运行时可能会出现内存不足的情况&#xff0c;一般可通过以下技术进行解决&#xff1a; 覆盖技术&#xff1a; 当程序太大超出内存容量时&#xff0c;可以采用手动覆盖的技术&#xff0c;只把需要的指令和数据保存在内存当…

SSM整合、环境配置以及基础综合测试(单表查询、多表查询和数据分页、前后端分离、Vue3)

SSM整合、环境配置以及基础综合测试 准备&#xff1a;创建maven项目以及项目框架准备 SSM整合简介 介绍: SSM(SpringSpringMVCMyBatis) 整合&#xff0c;就是三个框架协同开发。Spring整合Mybatis就是将Mybatis核心配置文件当中数据源的配置、事务处理、以及工厂的配置&…

Docker的使用说明

目录 第一章什么是Docker 1.1.Docker的概述 1.2.什么是容器 1.3.Docker核心概念 第二章.安装 Docker 2.1.安装环境部署 2.2.安装 Docker-CE并设置为开机自动启动 2.2.Docaker的简单信息查看 第三章.Docker 操作 3.1.Docker的镜像操作 3.2.Docker 容器操作 3.3.容器…