一、数据与数据类型

  1 什么是数据?

   x=10,10是我们要存储的数据

  2 为何数据要分不同的类型

   数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示

  3 数据类型

   数字(int)

   字符串 (str)

   列表 (list)

   元组 (tuple)

   字典 (dict)

   集合 (set)

二、基础数据类型

  2.1数字 int

  数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

  


#bit_length() 当十进制用二进制表示时,最少使用的位数
a = 3
b = 5
print(a.bit_length())
print(b.bit_length()) 结果如何下:
2
3 Process finished with exit code 0 换算如下:
二进制 十进制
0000 0001 1
0000 0010 2
0000 0011 3

 

  2.2 布尔值 bool

  布尔值就两种:True、False。就是反应条件的正确与否。

  
真  <==> 1 <==> True

  假  <==> 0 <==> False

  int --> str: str(int)

  str --> int: int(str)  #str必须全部是数字组成。

  int --> bool : 0 =False   非零=True

  bool --> int : int(True)=1  int(False)=0

  str  --> bool : ''(空) =False  非空字符串=True

  2.3 字符串 str

  2.3.1 字符串的所以与切片

  索引即下标,就是字符串组成的元素从第一个开始,初始索引为0依次类推。

a = 'ABCDKDSEKD'
print(a[0])
print(a[2])
print(a[-1])
print(a[-2]) 结果为:
A
C
D
K Process finished with exit code 0

  切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)

a = 'ABCDKDSEKD'
print(a[0:3])
print(a[2:5])
print(a[0:])  #默认到最后
print(a[0:-1])  #-1就是最后一个
print(a[-1::-1])  #倒序,必须加反向步长
print(a[0:5:2])  #加步长 
print(a[5:0:-2])  #反向加步长 结果为:
ABC
CDK
ABCDKDSEKD
ABCDKDSEK
DKESDKDCBA
ACK
DDB Process finished with exit code 0

  2.3.2 字符串的常用方法

s = 'qingSHANGlys' #定义一个字符串 s

(1)# * capitalize 首字母大写,其他字母小写
print(s.capitalize())
结果为:
Qingshanglys (2)# *** 全部大写upper() 全部小写lower()
print(s.upper())
print(s.lower())
结果为:
QINGSHANGLYS
qingshanglys #注 upper 和lower可以实现验证码功能,如下:
code = 'QeAr'.upper()
your_code = input('请输入验证码:').upper()
if your_code == code:
print('验证成功')
else:
print('验证失败') (3)#* 大小写反转 swapcase()
print(s.swapcase())
结果为:
QINGshangLYS (4)#*非字母的元素隔开的每个单词首字母大写 title()
s = 'alex wusir*oldboy3taibia'
print(s.title())
结果为:
Alex Wusir*Oldboy3Taibia (5)# center 居中,长度自己设定,可自定义填充物,默认填充物None
print(s.center(30))
print(s.center(30,'*'))
结果为:
alex wusir*oldboy3taibia
***alex wusir*oldboy3taibia*** (6)# *** startswith 判断是否以...开头 可切片
   # *** endswith判断是否以...结尾 可切片
s = 'qingSHANGlys'

print(s.startswith('qi',0,2))
print(s.startswith('Q'))
print(s.endswith('s'))
print(s.endswith('S'))
结果为:
True
False
True
False (7)# *** strip 去除首尾的空格,制表符\t,换行符。不仅仅是去除空格....(lstrip()只去除左边、 rstrip()只去除右边)
s = ' tyoyldBoyrtet ' print(s)
s1 = s.strip()
print(s1)
print(s1.strip('t')) #去除首尾的‘t’
结果为:
  tyoyldBoyrtet  
tyoyldBoyrtet
yoyldBoyrte
(8)*** split  (str ---> list) 以什么分割,最终形成一个列表此列表不含有这个分割的元素。

s='liuyisai,lys,qingshan'
print(s.split(','))
print(s.split('s'))
print(s.split('s',2))  #指定分隔符服个数
结果为:
['liuyisai', 'lys', 'qingshan']
['liuyi', 'ai,ly', ',qing', 'han']
['liuyi', 'ai,ly', ',qingshan'] (9)#join 将list --->str
s1 = 'lys'
print('+'.join(s1))
s2 = ['lys','qingshan','liuyisai']
print('+'.join(s2))
结果为:
l+y+s
lys+qingshan+liuyisai (10)#replace 替换
s1='lys say you beautiful'
s2 = s1.replace('lys','qingshan')
print(s2)
结果为:
qingshan say you beautiful (11)#find 通过元素找索引  找不到返回-1
  # index 通过元素找索引 找不到报错
s = 'qingshanlys'
print(s.find('s'))  #4
print(s.find('lys'))  #8
print(s.find('b'))  #-1
print(s.index('y'))  #9
print(s.index('b'))  #报错
(12)#格式化输出format
res = '我叫{},今年{}岁,爱好{}'  
print(res)  #我叫{},今年{}岁,爱好{}
res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('lys',25,'girl')
print(res)  #我叫lys今年25岁,爱好girl,我依然叫lys
res='我叫{name}今年{age}岁,爱好{hobby}'.format(hobby='gril', name='lys', age=25)
print(res)  #我叫lys今年25岁,爱好gril (13)#公共方法:len 长度
        count  数量 s = 'fdsafasdfasdfsadf' print(len(s))  #17
print(s.count('a')) #4
 

#####is系列
s = 'lys123'
print(s.isdigit())  #False  #字符串只由数字组成
print(s.isalpha())  #False  #字符串只由字母组成
print(s.isalnum())  #Ture  #字符串由字母或数字组成

s = input('请输入数字:').strip() #删除前后空格
if s.isdigit():  #判断是否为数字
print('OK')
else:
print('erre')
 

  2.4列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

  li = [‘lys’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’lys’}]

  列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

li = ['lys',25,'boy','shandong']
print(li[0]) #lys
print(li[-1]) #shandong -1代表最后一个元素的索引
print(li[:2]) #['lys', 25] 切片
print(li[:3:2]) #['lys', 'boy'] 加步长

  

  2.4.1 list 赠

li = ['lys',25,'boy','shandong']

#append 在最后追加
li.append('girl')
li.append([1,2,3])
print(li)
结果为:
['lys', 25, 'boy', 'shandong', 'girl', [1, 2, 3]] #insert 按照索引插入到指定位置
li.insert(0,'girl')
li.insert(2,[1,2,3])
print(li)
结果为:
['girl', 'lys', [1, 2, 3], 25, 'boy', 'shandong'] #extend 迭代着添加
li.extend('girl')
li.extend(['',222,333])
print(li)
结果为['lys', 25, 'boy', 'shandong', 'g', 'i', 'r', 'l', '', 222, 333]

  

  2.4.2 list 删

li = ['lys',25,'boy','shandong']
(1)#pop 有返回值 按照索引删除
print(li.pop(2))
print(li)
结果为:
boy
['lys', 25, 'shandong'] (2)#remove 按照元素去删,没有返回值
print(li.remove('lys'))
print(li)
结果为:
None
[25, 'boy', 'shandong'] (3)#clear 清空列表
li.clear()
print(li)
结果为:
[] (4)#del 内存级别删除列表,支持切片
del li
print(li) #按索引删除
del li[-1]
print(li)
结果为:
['lys', 25, 'boy'] #切片删除
del li[:2]
print(li)
结果为:
['boy', 'shandong']

  2.4.3 list 改

li = ['lys',25,'boy','shandong']

#按照索引改
print(li[2]) #boy
li[2] = 'girl'
print(li) #['lys', 25, 'girl', 'shandong'] #按照切片去改
li[:2] = 'abc'
print(li)
结果为:
['a', 'b', 'c', 'boy', 'shandong']
li[1:3] = [111,222,333,444]
print(li)
结果为:
['lys', 111, 222, 333, 444, 'shandong']

  2.4.4 list 查

li = ['lys',25,'boy','shandong']

#按照索引去查询
print(li[0]) #lys #按照切片去查询
print(li[1:3]) #[25, 'boy'] #循环查询
for i in li:
print(i)

  2.4.5 list 其他操作

li = [1,2,3,1,2,2,2,3,1]

(1)#count 统计某个元素在列表中出现的次数
print(li.count(2)) # (2)#len 统计元素总个数
print(len(li)) # (3)sort 用于在原位置对列表进行排序
l2 = [3,2,4,6,9,8,7,1]
l2.sort() #默认从小到大排序
print(l2) #[1, 2, 3, 4, 6, 7, 8, 9] l2.sort(reverse=True) #从大到小排序
print(l2) #[9, 8, 7, 6, 4, 3, 2, 1] (4)#reverse 将列表中的元素反向存放
l2.reverse()
print(l2) #[1, 7, 8, 9, 6, 4, 2, 3] (5)#index 用于从列表中找出某个值第一个匹配项的索引位置
print(li.index(2)) #

2.5 字典dict

  字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

  key:不可变的数据类型(可哈希):str,bool,tuple,int。
      value:任意数据类型。
          数据类型分类:
              不可变的数据类型(可哈希):str,bool,tuple,int
              可变的数据类型:dict,list,set。               容器类数据类型:list,tuple,dict,set.
     字典:存储数据多,关系型数据,查询速度快(二分查找)。
     3.6版本之前,字典是无序的,3.6之后字典是有序的。

  2.5.1 字典dict 赠

dic = {'name':'lys','age':25,'hobby':'girl'}

(1)dic['high'] = 178    #有则覆盖,无则添加
print(dic) #{'name': 'lys', 'age': 25, 'hobby': 'girl', 'high': 178}
dic['name'] = '青衫'
print(dic) #{'name': '青衫', 'age': 25, 'hobby': 'girl'} (2)#setdefault() 有则不变,无则添加
dic.setdefault('high',178)
print(dic) #{'name': 'lys', 'age': 25, 'hobby': 'girl', 'high': 178}
dic.setdefault('name','青衫')
print(dic) #{'name': 'lys', 'age': 25, 'hobby': 'girl'}

  2.5.2 字典dict 删

dic = {'name':'lys','age':25,'hobby':'girl'}

(1)#pop('key') 删除指定的健,有返回值、返回对应的值
print(dic.pop('hobby')) #girl
print(dic) #{'name': 'lys', 'age': 25} (2)#clear() 清空
dic.clear()
print(dic) #{} (3)#popitem() 随机删除,返回值{3.6及以后版本删除最后一个值,不再随机}
print(dic.popitem()) #('hobby', 'girl')
print(dic) #{'name': 'lys', 'age': 25} (4)#del 内存级别删除
del dic['age']
print(dic) #{'name': 'lys', 'hobby': 'girl'}
del dic
print(dic) #已找不到该字典

  2.5.3 字典dict 改

dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic.update(dic2) #update() 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中 结果为:{'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}

  2.5.4 字典dict 查

dic = {'name':'lys','age':25,'hobby':'girl'}

print(dic['name'])     #lys
print(dic['name1']) #报错 so: 没有会报错
print(dic.get('hobby')) #girl
print(dic.get('hobby1')) #None
print(dic.get('hobby1','没有此值')) #没有此值 so:查不到返回指定的值,默认为None

  2.5.5 字典dict的其他操作

dic = {'name':'lys','age':25,'hobby':'girl'}

(1)#items()
item = dic.items()
print(item,type(item))
结果为:
dict_items([('name', 'lys'), ('age', 25), ('hobby', 'girl')]) <class 'dict_items'> #这个类型就是dict_items类型,可迭代的 for i in dic:
print(i)
结果为:#循环取出dic 所以的key
name
age
hobby for i in dic.items():
print(i)
结果为:
('name', 'lys')
('age', 25)
('hobby', 'girl')
for k,v in dic.items():
print(k,v)
结果为:
name lys
age 25
hobby girl (2)keys()
for i in dic.keys():
print(i)
结果为: #循环取出字典dic的所以key
name
age
hobby (3)values()
for i in dic.values():
print(i)
j结果为:循环取出字典dic的所以value
lys
25
girl

  2.6 元组 tulpe

  元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

tu = (11,2,True,[2,3,4],'lys')
for i in tu:
print(i)
结果为:
11
2
True
[2, 3, 4]
lys print(tu[2]) #True print(tu.index('lys')) # tu[-2].append(666)  #子不可变,孙看变
print(tu) #(11, 2, True, [2, 3, 4, 666], 'lys')

  2.7 集合 set

  集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

    去重,把一个列表变成集合,就自动去重了。

    关系测试,测试两组数据之前的交集、差集、并集等关系。

  2.7.1 集合的创建

set1 = {1,2,3,4}
set2 = {'a','b','c'}
print(set1,set2) 结果为:
{1, 2, 3, 4} {'a', 'c', 'b'}

  2.7.2 集合的赠

set1 = {'lys','qingshan','liuyisai','liu'}

set1.add(666)    #位置随机
print(set1) #{'liuyisai', 'lys', 'liu', 666, 'qingshan'} set1.update('abc') #迭代着增加
print(set1) #{'liuyisai', 'lys', 'liu', 'c', 'a', 'b', 666, 'qingshan'} set1.update(['a1','b2','c3'])
print(set1) #{'lys', 'liuyisai', 'c3', 'b2', 'liu', 'a1', 'qingshan'}

  2.7.3 集合的删

set1 = {'lys','qingshan','liuyisai','liu'}

set1.remove('liuyisai')    #删除一个指定元素
print(set1) #{'liu', 'lys', 'qingshan'} set1.pop() #随机删除一个元素
print(set1) set1.clear() #清空集合
print(set1) #set() del set1 #删除集合
print(set1)

  2.7.4 集合的去重功能

list = ['a','b','a',1,1,1,2]
print(set(list)) #{1, 2, 'b', 'a'}

  2.7.5 集合的交集(&  或者 intersection)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8} print(set1 & set2) #{4, 5}

  2.7.6 集合的并集 (| 或者 union)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8} print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8}

  2.7.7 集合的差集 (- 或者 difference)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8} print(set1 - set2) #{1, 2, 3}

  2.7.8 集合的反交集

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8} print(set1 ^ set2)
结果为:
{1, 2, 3, 6, 7, 8}

 2.7.9 集合子集与超集

set1 = {1,2,3}
set2 = {1,2,3,4,5,6} print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。

  2.7.10 frozenset 不可变集合,让集合变成不可变类型。

s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

三、其他(enumerate,range,以及分别赋值等)

  enumerate :枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

li =['lys','qingshan','linux','python','DB']

for i in enumerate(li):
print(i)
结果为:
(1, 'qingshan')
(2, 'linux')
(3, 'python')
(4, 'DB') for index,name in enumerate(li):
print(index,name)
结果为:
0 lys
1 qingshan
2 linux
3 python
4 DB for index,name in enumerate(li,5): #默认从0开始,可以指定起始位置
print(index,name)
结果为:
5 lys
6 qingshan
7 linux
8 python
9 DB

  range:指定范围,生成指定数字,配合for循环使用,不能直接print

for i in range(10):    #默认从0开始,顾头不顾尾
print(i)
结果为:
0
1
2
3
4
5
6
7
8
9 for i in range(5,10): #指定起始位置 顾头不顾尾
print(i)
结果为:
5
6
7
8
9 for i in range(5,10,2): #支持步长
print(i)
结果为:
5
7
9 for i in range(5,1,-1): #反向打印
print(i)
结果为:
5
4
3
2

  fromkeys

dic1 = dict.fromkeys('abc','张三')
print(dic1)
dic2= dict.fromkeys([1,2,3],'李四')
print(dic2) 结果为:
{'a': '张三', 'b': '张三', 'c': '张三'}
{1: '李四', 2: '李四', 3: '李四'}
dic3 = dict.fromkeys('abc',[])
# print(dic3)
dic3['a'].append('老男孩')
print(dic3) 结果为:
{'a': ['老男孩'], 'b': ['老男孩'], 'c': ['老男孩']}

四、数据类型补充

l1 = ['alex', 'wusir', 'taibai', 'barry', '老男孩']

del l1[1::2]
print(l1) for i in range(len(l1)):
print(l1) # ['alex', 'wusir', 'taibai', 'barry', '老男孩']
# ['alex', 'wusir', 'taibai', 'barry', '老男孩']
# ['alex', 'taibai', 'barry', '老男孩']
# ['alex', 'taibai', 'barry', '老男孩']
print(i) # 0 1 2 3
if i % 2 == 1:
del l1[i]
print(l1) # ['alex', 'wusir', 'taibai', 'barry', '老男孩']
# ['alex', 'taibai', 'barry', '老男孩']
# ['alex', 'taibai', 'barry']
print(i) # 0 1
#再循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),会出错 #dict 再循环字典时,不要改变字典的大小。
dic = {'k1':'v1','k2':'v2','k3':'v3','r':666}
l1 = []
for i in dic:
if 'k' in i:
l1.append(i)
# print(l1) for i in l1:
del dic[i]
print(dic) #tu 如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型与该元素一致。
tu1 = (1)
print(tu1,type(tu1))
tu2 = ('alex')
print(tu2,type(tu2)) tu3 = (['alex',1,2])
print(tu3,type(tu3))

五、深浅copy

  1 先看赋值运算。

l1 = [1,2,3,['barry','alex']]
l2 = l1
l1[0] = 5
l1[3][1] = 'lys'
print(l1) #[5, 2, 3, ['barry', 'lys']] 34404952
print(l2) #[5, 2, 3, ['barry', 'lys']] 34404952 对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

  2、浅拷贝copy。

l1 = [1,2,3,['barry','alex']]
l2 = l1.copy()
l1[3][1] = 'lys'
l1[0] = 5
print(l1,id(l1)) #[5, 2, 3, ['barry', 'lys']] 6617688
print(l2,id(l2)) #[1, 2, 3, ['barry', 'lys']] 6617768
print(id(l1[3])) #
print(id(l2[3])) # 对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

  3、深拷贝deepcopy。

import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1)
l1[3][1] = 'lys'
l1[0] = 5
print(l1) #[5, 2, 3, ['barry', 'lys']]
print(l2) #[1, 2, 3, ['barry', 'alex']] 对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

day02--Python基础二(基础数据类型)的更多相关文章

  1. python基础二(基本数据类型)

    python的基本数据类型:数字.字符串.列表.元祖.字典.集合 一.基本数据类型 1.1 数字int 数字主要是用来计算用的,使用方法并不多. # bit_length() 当十进制用二进制表示的时 ...

  2. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  3. 【笔记】Python基础二:数据类型之集合,字符串格式化,函数

    一,新类型:集合 集合出现之前 python_l = ['lcg','szw','zjw'] linux_l = ['lcg','szw','sb'] #循环方法求交集 python_and_linu ...

  4. python开发基础(二)常用数据类型调用方法

    1 数字: int 2 3 int : 转换,将字符串转化成数字 4 num1 = '123' 5 num2 = int (a) 6 numadd = num2 +1000 7 print(num2) ...

  5. JavaScript学习 - 基础(二) - 基础类型/类型转换

    基础类型 - 数字类型(Number) 1.最基本的数据类型 2.不区分整型数值和浮点型数值 3.所有数字采用64位浮点格式存储,相当于Java和C语言中double格式 4.能表示的最大值 +- 1 ...

  6. python 基础篇(二)数据类型概述

    正式进入python的学习. 数据类型可以分为身份,类型,数据项三项联合组成. 身份: id() 类型:type() 数据类型:int,boolean,tuple,string,dict,list 1 ...

  7. python基础(二)-------数据类型

    python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...

  8. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  9. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  10. 二.Python基础语法和数据类型

    Python第二节 基础语法和数据类型 Python编码 python3默认情况下源码文件以UTF-8编码, 字符串均为unicode字符串.同时也可以通过# -*- coding: cp-1252 ...

随机推荐

  1. java 或者 js 获取项目访问路径(域名)

    /** * 获得站点url * @return */ public String getWebUrl(){ String url = getRequest().getScheme() + " ...

  2. docker部署jenkins环境

    首先获取jenkins的镜像: docker pull jenkins 设置jenkins_home映射: sudo mkidr -p /jenkins_home /jenkins_home 启动容器 ...

  3. Flutter - > Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0) and runtime (27.1.1) classpath.

    Launching lib\main.dart on Nokia X6 in debug mode... Initializing gradle... Resolving dependencies.. ...

  4. 图片转换成word 公式

    1 下载安装mathpix, 利用该软件将图片转换成LaTeX公式 2 参考此帖,将LaTeX公式转换成word公式 https://www.douban.com/note/648629593/ ht ...

  5. hdu1272小希的迷宫(并查集判断回路和是否连通)

    传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...

  6. elk6.3 centos集群搭建 head插件安装

    版本elk均为6.3+centos7.0 准备工作 官网下载elk6.3的linux环境的压缩包,sftp上传 下载对应的head插件sftp上传到指定目录 tar.gz文件解压 tar -zxvf ...

  7. [Unity Shader] 切线空间的法线贴图

    切线空间的法线贴图,可以这样理解: #纹理坐标是从0到1,它的坐标是x向右,y向下 #顶点坐标是从-1到-1,坐标是x向右,y向上 1 由表面上某点的切线Tangent.副切线Bitangent.法线 ...

  8. MapReduce 基础学习

      什么是MapReduce? mapreduce 是一种软件框架 mapreduce job将任务分解为独立的块儿到不同的map task,进行并行处理: map任务输出会做相应的排序处理,并作为r ...

  9. Netty 粘包/拆包应用案例及解决方案分析

    熟悉TCP变成的可以知道,无论是客户端还是服务端,但我们读取或者发送消息的时候,都需要考虑TCP底层粘包/拆包机制,下面我们先看一下TCP 粘包/拆包和基础知识,然后模拟一个没有考虑TCP粘包/拆包导 ...

  10. rename命令详解

    基础命令学习目录首页 原文链接:http://man.linuxde.net/rename 将main1.c重命名为main.c rename main1.c main.c main1.c renam ...