一文掌握Python數據容器

寫在前面

數據容器時指一種可存儲多個元素的Python數據類型诬辈,主要包含list(列表)、tuple(元組)屿笼、str(字符串)牲距、set(集合)、dict(字典)魄健。

一、列表

9.1.1 列表定義

定義新的列表:
變量名稱 = [元素1, 元素2, 元素3, 元素4, ....]

定義空列表:
變量名稱 = []
變量名稱 = list()

9.1.2 嵌套列表

列表中的元素比較靈活,可以均互不相同:

# 可以發(fā)現(xiàn)茵臭,下面列表的三個元素均不同
bioinformatic = [2023, 'Biomamba',True]
print(type(bioinformatic))

# 這意味著列表里可以"套"列表,稱為嵌套列表
## <class 'list'>
bioinformatic = [2023, 'Biomamba',True,[2023, 'subBiomamba',True]]
print(type(bioinformatic))
## <class 'list'>

9.1.3 列表下標索引

列表中元素的索引有些反人類舅世,第一個元素的索引編號為0旦委,第二個索引編號為1,一次類推雏亚,可用list[索引編號的方式取出]

bioinformatic = [2023, 'Biomamba',True]
print(bioinformatic[0])
## 2023
print(bioinformatic[1])

## Biomamba
print(bioinformatic[2])

## True

不僅可以正著數缨硝,列表索引還支持倒著數,最后一個元素的索引為-1罢低,倒數第二個的索引為-2查辩,依次類推:

bioinformatic = [2023, 'Biomamba',True]
print(bioinformatic[-1])

## True
print(bioinformatic[-2])

## Biomamba
print(bioinformatic[-3])

## 2023

那么問題來了,嵌套的索引如何取出元素呢:

# 取出subBiomamba這個元素
bioinformatic = [2023, 'Biomamba',True,[2023, 'subBiomamba',True]]
print(bioinformatic[3][1])

# 倒著韧帧:
## subBiomamba

print(bioinformatic[-1][-2])
## subBiomamba

記得索引不要超出范圍宜岛,否則會報錯list index out of range

9.1.4 list中的方法與操作

list.index(元素) 該方法可以根據元素的內容找出元素在列表中對應的下標:

bioinformatic = [2023, 'Biomamba',True,[2023, 'subBiomamba',True]]
bioinformatic.index('Biomamba')
#返回了`Biomamba`字符所在的正向索引:
## 1
# 若查找的元素不存在,則會報錯:
bioinformatic.index('Bioinformatics')

ValueError: ‘Bioinformatics’ is not in list

修改已有元素值

bioinformatic[1] = "我是一個修改后的元素"
print(bioinformatic)
# 可以看到bioinformatic這個列表中索引1對應的元素已被替換:

## [2023, '我是一個修改后的元素', True, [2023, 'subBiomamba', True]]

插入新元素

bioinformatic.insert(1,'新插入的元素')
print(bioinformatic)
# 可以看到元素被插入索引1的位置功舀,后面的元素被依次推后
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True]]

追加元素

# 如果像R語言那樣輸入一個不存在的索引去追加萍倡,就會出現(xiàn)如下報錯
bioinformatic[6] = '我是一個追加的元素'

IndexError: list assignment index out of range

# 通過append方法可以做到我們設想的追加功能:
bioinformatic.append('我是一個追加的元素')
print(bioinformatic)
# 只能寫入尾部

## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素']

追加多個元素

list.append的方式只能向尾部添加單個字面量,而list.extend可以直接把其它數據容器中的內容整個取出辟汰,依次追加到列表尾部:

new_list = [1,2,3]
print(new_list)
## [1, 2, 3]
bioinformatic.extend(new_list)
print(bioinformatic)
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1, 2, 3]

元素刪除

# 方式一
# del 列表[下標]
print(bioinformatic)
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1, 2, 3]
del bioinformatic[-1]
print(bioinformatic)
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1, 2]
# 方式二
# 列表.pop(下標)
print(bioinformatic)
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1, 2]

bioinformatic.pop(-1)
## 2
print(bioinformatic)
## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1]
# pop方法的實質是從列表中取出對應元素列敲,因此,pop方法可以返回對應的值:print(bioinformatic)

## [2023, '新插入的元素', '我是一個修改后的元素', True, [2023, 'subBiomamba', True], '我是一個追加的元素', 1]
my_value = bioinformatic.pop(-1)
print(my_value)
## 1
# 方式3 list.remove()
new_list = ['num_1','num_2','num_3','num_1','num_4']
new_list.remove('num_1')
print(new_list)
# 可以看出remove方法通過給定內容帖汞,在列表中正序檢索戴而,刪除對應的元素
## ['num_2', 'num_3', 'num_1', 'num_4']

列表清空

print(new_list)

## ['num_2', 'num_3', 'num_1', 'num_4']
new_list.clear()
print(new_list)
## []

統(tǒng)計某一內容在列表中的數量

new_list = ['Biomamba','bioinformatics','Biomamba','Biomamba']
new_list.count('Biomamba')
## 3

統(tǒng)計列表中元素數量

len(new_list)

## 4

9.1.5 遍歷列表

由于列表的索引結構,我們可以讓列表的索引與循環(huán)發(fā)生一些交互:

while循環(huán):

my_list = ['Biomamba_1','Biomamba_2','Biommaba_3']
temp_num = 0
while temp_num < len(my_list):
    print(f"這是list中的第{temp_num+1}個元素翩蘸,它的索引為:{temp_num},它的值為{my_list[temp_num]}")
    temp_num += 1
## 這是list中的第1個元素所意,它的索引為:0,它的值為Biomamba_1
## 這是list中的第2個元素,它的索引為:1,它的值為Biomamba_2
## 這是list中的第3個元素,它的索引為:2,它的值為Biommaba_3

for循環(huán)

my_list = ['Biomamba_1','Biomamba_2','Biommaba_3']

for temp_ele in my_list:
    print(f"這是list中的第{my_list.index(temp_ele)+1}個元素扁眯,它的索引值為:{my_list.index(temp_ele)+1},它的值為{temp_ele}")
    temp_num += 1
## 這是list中的第1個元素壮莹,它的索引值為:1,它的值為Biomamba_1
## 這是list中的第2個元素,它的索引值為:2,它的值為Biomamba_2
## 這是list中的第3個元素姻檀,它的索引值為:3,它的值為Biommaba_3

二命满、元組

9.2.1 元組的定義格式

元組與列表一樣,是可封裝多個绣版、不同類型的元素的數據容器胶台。但元組一旦定義,便不可修改杂抽、不可修改诈唬、不可修改(重說三)。
元組的定義方法主要有以下幾種方式:

定義元組字面量

(元素,元素,元素,…,元素,)

('Biomamba',2023,'bioinformatic')

## ('Biomamba', 2023, 'bioinformatic')

定義元組變量

變量名 = (元素,元素,元素,…,元素,)

my_tuple = ('Biomamba',2023,'bioinformatic')
print(my_tuple)

## ('Biomamba', 2023, 'bioinformatic')

定義空元組

變量名稱 = () 變量名稱 = tuple()

print(tuple())

## ()
print(type(tuple()))

## <class 'tuple'>

單元素元組

單元素的元組需要在元素后加上一個”,“缩麸,否則默認為字串類型

# 不加逗號
print(type(('Biomamba')))
# 加上一個逗號

## <class 'str'>
print(type(('Biomamba',)))

## <class 'tuple'>

9.2.2 元組元素索引

無需過多介紹铸磅,與列表的索引使用方法基本一致,甚至各類方法也一致:

my_tuple = ('Biomamba',2023,'Biomamba','bioinformatic')
print(my_tuple[0])

## Biomamba
print(my_tuple[-1])

## bioinformatic
print(my_tuple.index('Biomamba'))

## 0
print(my_tuple.count('Biomamba'))

## 2

9.2.3 元組修改

# 簡單元素的元組不可修改
my_tuple = ('Biomamba',2023,'Biomamba','bioinformatic')
my_tuple[0] = '我是一個修改后的數據'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[292], line 3
      1 # 簡單元素的元組不可修改
      2 my_tuple = ('Biomamba',2023,'Biomamba','bioinformatic')
----> 3 my_tuple[0] = '我是一個修改后的數據'

TypeError: 'tuple' object does not support item assignment
# 當元組里有列表內容時:
my_tuple = ('Biomamba',2023,'Biomamba','bioinformatic',['subBiomamba',2023,'subBiomamba','subbioinformatic'])

# 可以進行修改
my_tuple[-1][1] = "我是一個修改后的數據"
print(my_tuple[-1][1] )

三杭朱、字符串

字符串是字符的容器阅仔,一個字符串可以存放任意數量的字符(只要內存夠大,字符串長度就可繼續(xù)增加)

9.3.1 字符串格式化

字符串格式化的內容我們在5.1.2中已經提前詳細介紹過弧械,此處不再重復

9.3.2 字符串索引

注意字符串的索引為對應字節(jié)的索引八酒,而非”單詞”的索引,例如:

my_chr = 'I am Biomamba'
print(my_chr[0])

## I
print(my_chr[2])

## a
print(my_chr[-1])

## a
print(f"注意刃唐,空格也占一個字節(jié):這里有一個空格:{my_chr[1]}羞迷。")

## 注意,空格也占一個字節(jié):這里有一個空格:画饥。
# 各類方法也依舊可以使用:
print(my_chr.index('a'))

# 也支持多個字符的檢索

## 2
print(my_chr.index('Biomamba'))
# 返回的索引是多字符的起始索引

## 5

9.3.3 字符串替換

字符串有一個listtuple不具備的方法:.replace衔瓮。顧名思義,這一方法可以做字符串的替換:

# 當元組里有列表內容時:
my_tuple = ('Biomamba',2023,'Biomamba','bioinformatic',['subBiomamba',2023,'subBiomamba','subbioinformatic'])

# 可以進行修改
my_tuple[-1][1] = "我是一個修改后的數據"
print(my_tuple[-1][1] )
print(new_mychr)
# 可以看出荒澡,原本的字符串并沒有發(fā)生改變
# 即.replace并不是修改原字符串报辱,而是替換原字符串內容后輸出了一個新的字符串
## I am the autuor of this tutorial

9.3.4 字符串分割

通過.split(分隔符)可以對字符串進行分割,分隔后的數據類型為list

# 例如這里我有三段話单山,我希望通過句號來分割。
my_chr = 'I am Biomamba. I am the autuor of this tutorial. Today is Friday'
split_result = my_chr.split('.')
print(split_result)
## ['I am Biomamba', ' I am the autuor of this tutorial', ' Today is Friday']
print(type(split_result))
# 分割后的結果為返回的list

## <class 'list'>

9.3.5 字符串規(guī)整操作

用于去除字符串中的一些字符幅疼,語法:
字符串.strip(字符)

# 不傳入任何參數米奸,既是去除字符串首尾空格以及換行符
my_chr = ' I am Biomamba '
print(my_chr)

##  I am Biomamba
print(my_chr.strip())
# 空格本來就是隱藏的,不太能看出來
# 大家可以通過下面的縮進體會:
## I am Biomamba
my_chr = 'I am Biomamba'
print(my_chr)
## I am Biomamba
my_chr = 'I am Biomamba'
print(my_chr)
## I am Biomamba

9.3.6 統(tǒng)計字符串出現(xiàn)次數

my_chr = 'I am Biomamba'print(my_chr.count('am'))# 這時輸入字符作為一個整體用于字數統(tǒng)計
## 2

9.3.7 字符串個數(長度)統(tǒng)計

len('I am Biomamba')

## 13

9.3.8 字符串遍歷

與此前其它數據容器的操作方法類似:

my_chr = 'I am Biomamba'
for temp_chr in my_chr:
    print(f"{temp_chr}是字符串的第{my_chr.index(temp_chr)}個字符")
## I是字符串的第0個字符
##  是字符串的第1個字符
## a是字符串的第2個字符
## m是字符串的第3個字符
##  是字符串的第1個字符
## B是字符串的第5個字符
## i是字符串的第6個字符
## o是字符串的第7個字符
## m是字符串的第3個字符
## a是字符串的第2個字符
## m是字符串的第3個字符
## b是字符串的第11個字符
## a是字符串的第2個字符

四爽篷、序列及序列切片

序列為內容連續(xù)悴晰、有序、可使用下標索引的一類數據容器。我們此前介紹的列表铡溪、元組漂辐、字符串均屬于序列。
序列切片:從一個序列中取出一個子序列棕硫,序列切片的操作并不會影響序列本身髓涯,而是得到一個新的序列。語法為:
序列[起始下標:結束下標:步長]

若起始下標留空視為從頭開始哈扮,若結束下標留空視作截取到結尾纬纪,步長為依次取元素的間隔,若步長省略則視為1滑肉。注意包各,取出的內容不包含結束下標本身

my_chr = ['num_1','num_2','num_3','num_4','num_5','num_6','num_7','num_8','num_9']print(my_chr[1:4]) # 省略步長# 
這樣用起來還是跟R語言非常類似的
# 但是不包含索引4本身,即實際取的索引為1靶庙、2问畅、3

## ['num_2', 'num_3', 'num_4']
# 來一個究極省略的,省略起始下標六荒、結束下標护姆、步長:
print(my_chr[:])
# 這時整個序列會被輸出

## ['num_1', 'num_2', 'num_3', 'num_4', 'num_5', 'num_6', 'num_7', 'num_8', 'num_9']
# 省略起始步長為3切片print(my_chr[::3])

## ['num_1', 'num_4', 'num_7']
# 在1到6個索引中以步長為2進行切片
print(my_chr[0:5:2])

## ['num_1', 'num_3', 'num_5']
# 反向切片也支持
print(my_chr[-1:-6:-2])
# 步長也需要為負數
# 那么給出的結果順序為原序列的倒序

## ['num_9', 'num_7', 'num_5']

五、集合

集合(set)是一個無序的不重復元素恬吕。而此前介紹的列表签则、元組均是有序且可出現(xiàn)重復元素的。由于集合的無序性铐料,自然也就不支持通過下標索引進行訪問渐裂。但集合支持修改。

9.5.1 定義集合

定義集合字面量
{元素,元素,元素,...,元素}
定義集合變量
變量名稱 = {元素,元素,元素,...,元素}
定義空集合
變量名稱 = set()
例如:

# 定義集合
my_set = {'Biomamba',2023,'Biomamba'}
print(my_set)
# 可以看到重復的'Biomamba'字樣被直接去除
## {'Biomamba', 2023}

9.5.2 集合修改

# 添加集合元素
my_set = {'Biomamba',2023,'Biomamba'}
my_set.add('Study Python') #沒有返回值钠惩,直接修改原集合
print(my_set)
# 可以看到Study Python被添加
## {'Biomamba', 'Study Python', 2023}
# 刪除集合元素
my_set = {'Biomamba',2023,'Biomamba'}
my_set.remove(2023)
print(my_set)
## {'Biomamba'}

9.5.3 取出集合元素

由于集合沒有下標索引柒凉,.pop也就沒有任何參數,只能隨機取出集合重的一個元素并給出返回值篓跛。

# 刪除集合元素
my_set = {'Biomamba',2023}
my_set.pop()
## 'Biomamba'
print(my_set)

## {2023}

9.5.4 清空集合

與各類序列的清空方法類似

my_set = {'Biomamba',2023}
my_set.clear()
print(my_set)
# 清空并不是刪除膝捞,還會存在一個空集合:
## set()

9.5.5 集合取差集

# 返回的結果是在my_set1中包含,但在my_set2中不包含的元素
my_set1 = {'Biomamba',2023,'Study Python'}
my_set2 = {'Biomamba',2023,'Study R'}
my_set3 = my_set1.difference(my_set2)
print(my_set3)
## {'Study Python'}
# 但對原集合本身的值無任何影響
print(my_set1)

## {'Biomamba', 'Study Python', 2023}
print(my_set2)

## {'Biomamba', 'Study R', 2023}
# 在集合1內愧沟,刪除與集合2相同的元素
my_set1 = {'Biomamba',2023,'Study Python'}
my_set2 = {'Biomamba',2023,'Study R'}
my_set1.difference_update(my_set2)
print(my_set1)
# 也就是把集合一直接變成上一步的差集蔬咬,但集合2不會發(fā)生變化
## {'Study Python'}
print(my_set2)

## {'Biomamba', 'Study R', 2023}

9.5.6 集合合并

my_set1 = {'Set1','Biomamba',2023,'Study Python'}
my_set2 = {'Set2','Biomamba',2023,'Study R'}
my_set3 = my_set1.union(my_set2)
print(my_set3)
## {'Biomamba', 'Set2', 2023, 'Set1', 'Study Python', 'Study R'}

9.5.7 統(tǒng)計集合元素數量

len(my_set3)

## 6

9.5.8 遍歷集合

由于集合不存在下標索引,那么while循環(huán)的方式無法應用于集合沐寺,但for循環(huán)依舊可以使用

# 利用for循環(huán)遍歷打印出集合內的元素
my_set = {'Set1','Biomamba',2023,'Study Python'}
for temp_set in my_set:
    print(temp_set)

## Set1
## Biomamba
## Study Python
## 2023

六林艘、字典

字典是Python中的可變容器模型,且可存儲任意類型對象混坞。有些類似于哈希狐援,可以通過特定的鍵值(key)返回對應的內容(value)
字典的keyvalue可以是任意數據類型钢坦,但key不可為字典類型。

9.6.1 字典定義

字典的每個鍵值key:value用冒號 : 分割啥酱,每個鍵值對之間用逗號 , 分割爹凹,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
例如如下的字典:

mydict = {"name":"Biomamba","Date":2023,"major":"Bioinformatics"}
print(mydict)
## {'name': 'Biomamba', 'Date': 2023, 'major': 'Bioinformatics'}

定義空字典:

mydict = {}
print(mydict)
## {}

或者用函數定義空字典:

mydict = {}
print(mydict)
## {}
print(type(mydict))

## <class 'dict'>

字典會自動去除重復的key所在鍵值對:

mydict = {"name":"Biomamba","name":"Bioinformatic-base","Date":2023}print(mydict) # 可以看出保留的是最后一個重復的key對應的值

## {'name': 'Bioinformatic-base', 'Date': 2023}

9.6.2 字典值的獲取

字典也不支持下標索引,可以通過字典[key]獲取對應的值镶殷,例如:

mydict = {"name":"Biomamba","Date":2023,"major":"Bioinformatics"}
print(mydict["name"])

## Biomamba

9.6.3 字典嵌套

例如value可以是一個子字典:

mydict = {
    'information':{
        'language':'python',
        'skill':'scRNA-Seq'},
    'Date':{
        'year':2023},
        'month':5,
        'Day':4}
print(mydict)
## {'information': {'language': 'python', 'skill': 'scRNA-Seq'}, 'Date': {'year': 2023}, 'month': 5, 'Day': 4}
# 獲取嵌套字典的內容禾酱,例如查詢information里的language對應的值:
print(mydict["information"]["language"])
## python

9.6.4 修改字典

新增元素

mydict = {"name":"Biomamba"}
print(mydict)

## {'name': 'Biomamba'}
mydict["Date"] = 2023
print(mydict) # 可以看出無需再賦值給原字典,也可以添加元素

## {'name': 'Biomamba', 'Date': 2023}

更新元素
由于字典的key無法重復批钠,因此對已存在的key執(zhí)行類似于添加的操作宇植,即可更新value

mydict = {"name":"Biomamba","Date":2023}
print(mydict)

## {'name': 'Biomamba', 'Date': 2023}
mydict["Date"] = 2000
print(mydict) # 可以看出無需再賦值給原字典,也可以添加元素

## {'name': 'Biomamba', 'Date': 2000}

刪除同時取出元素

mydict = {"name":"Biomamba","Date":2023}
print(mydict)

## {'name': 'Biomamba', 'Date': 2023}
newdict = mydict.pop('Date')
print(mydict)

## {'name': 'Biomamba'}
print(newdict)

## 2023

清空字典

mydict = {"name":"Biomamba","Date":2023}
print(mydict)

## {'name': 'Biomamba', 'Date': 2023}
mydict.clear()
print(mydict)

## {}

獲取字典中全部的key

mydict = {"name":"Biomamba","Date":2023}
mykeys = mydict.keys()
print(mykeys)

## dict_keys(['name', 'Date'])

獲取字典的元素數量

mydict = {"name":"Biomamba","Date":2023}
len(mydict)

## 2

9.6.5 遍歷字典

通過獲得的key遍歷字典:

mydict = {"name":"Biomamba","Date":2023,"major":"Bioinformatics"}
for mytemp in mydict.keys():
    print(f"鍵值{mytemp}對應的value為:{mydict[mytemp]}")
## 鍵值name對應的value為:Biomamba
## 鍵值Date對應的value為:2023
## 鍵值major對應的value為:Bioinformatics

直接用for循環(huán)遍歷字典埋心,獲得的臨時變量就是key值:

mydict = {"name":"Biomamba","Date":2023,"major":"Bioinformatics"}
for mytemp in mydict:
    print(f"鍵值{mytemp}對應的value為:{mydict[mytemp]}")
## 鍵值name對應的value為:Biomamba
## 鍵值Date對應的value為:2023
## 鍵值major對應的value為:Bioinformatics

因為字典沒有下標索引指郁,因此無法直接用于while循環(huán),若通過len來取key的值則有些低效且不優(yōu)雅:

mydict = {"name":"Biomamba","Date":2023,"major":"Bioinformatics"}
mylen = len(mydict)
print(mylen)
## 3
temp_len = 0
while temp_len < mylen:
    print(f"鍵值{list(mydict.keys())[temp_len]}對應的value為:{mydict[list(mydict.keys())[temp_len]]}")
    temp_len += 1
# 多寫了很多行
## 鍵值name對應的value為:Biomamba
## 鍵值Date對應的value為:2023
## 鍵值major對應的value為:Bioinformatics

七拷呆、總結

9.7.1 分類

是否支持下標索引:
支持: 列表闲坎、元組、字符串 - 序列類型
不支持:集合茬斧、字典 - 非序列類型

是否支持重復元素:
支持:列表腰懂、元組、字符串 - 序列類型
不支持:集合项秉、字典 - 非序列類型

是否可以修改:
支持:列表绣溜、集合、字典 - 序列類型
不支持:元組娄蔼、字符串 - 非序列類型

是否支持遍歷:
for循環(huán):五類數據容器都支持
while循環(huán):列表怖喻、元組、字符串支持岁诉,集合锚沸、字典無法直接參與while循環(huán)

9.7.2 通用操作

max():得到最大的元素
min():得到最小的元素
sorted(容器,[reverse = False]):ASCII碼升序排序
sorted(容器,[reverse = True]):ASCII碼降序排序

9.7.3 容器相互轉換

list(其它容器)
tuple(其它容器)
str(其它容器)
set(其它容器)

往期回顧

生信Python速查手冊

Python安裝(Windows+Linux)

Python的"Rstudio"——Pycharm

碼Python神器:jupyter notebook

一文了解Python基礎:字面量、注釋涕癣、變量哗蜈、類型、運算符

Python判斷語句

Python循環(huán)語句

Python函數與方法

如何聯(lián)系我們

公眾號后臺消息更新不及時坠韩,超過48h便不允許回復讀者消息距潘,這里給大家留一下領取資料、免費服務器(有root權限的共享服務器,注冊即送200¥)的微信號只搁,方便各位隨時交流绽昼、提建議(科研任務繁重,回復不及時請見諒)须蜗。此外呼聲一直很高的交流群也建好了,歡迎大家入群討論:永久免費的千人生信、科研交流群

大家可以閱讀完這幾篇之后添加
給生信入門初學者的小貼士
如何搜索公眾號過往發(fā)布內容

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末明肮,一起剝皮案震驚了整個濱河市菱农,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柿估,老刑警劉巖循未,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秫舌,居然都是意外死亡的妖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門足陨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫂粟,“玉大人,你說我怎么就攤上這事墨缘⌒呛纾” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵镊讼,是天一觀的道長宽涌。 經常有香客問我,道長蝶棋,這世上最難降的妖魔是什么卸亮? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮玩裙,結果婚禮上兼贸,老公的妹妹穿的比我還像新娘。我一直安慰自己献酗,他們只是感情好寝受,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罕偎,像睡著了一般很澄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颜及,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天甩苛,我揣著相機與錄音,去河邊找鬼俏站。 笑死讯蒲,一個胖子當著我的面吹牛,可吹牛的內容都是我干的肄扎。 我是一名探鬼主播墨林,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼赁酝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了旭等?” 一聲冷哼從身側響起酌呆,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搔耕,沒想到半個月后隙袁,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡弃榨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年菩收,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲸睛。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡娜饵,死狀恐怖,靈堂內的尸體忽然破棺而出腊凶,到底是詐尸還是另有隱情划咐,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布钧萍,位于F島的核電站褐缠,受9級特大地震影響,放射性物質發(fā)生泄漏风瘦。R本人自食惡果不足惜队魏,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望万搔。 院中可真熱鬧胡桨,春花似錦、人聲如沸瞬雹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酗捌。三九已至呢诬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胖缤,已是汗流浹背尚镰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哪廓,地道東北人狗唉。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像涡真,于是被迫代替她去往敵國和親分俯。 傳聞我的和親對象是個殘疾皇子肾筐,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容