白龙庙聚会,梁上好汉人多势众,听说江州城里军队追赶过来了,大家一起出去迎敌。李逵一马当先杀入人群,花荣一箭射倒领头的马军,其它马军掉头就走,把自己的步兵冲倒了一半。大家一直杀到江州城边,后撤回到穆弘庄上。
宋江说感谢众好汉相救,希望大家伙再送个人情,去打了无为军,杀了黄文炳。晁盖起初不同意,宋江说现在就是最好的机会,花荣说要先探听虚实,薛永说探听这事交给我来办!
两天后薛永带来了通臂猿侯健,黄文炳请他到家做衣服,因此对黄文炳家非常熟悉。
众好汉放火杀入了黄文炳家,黄文炳正在知府议事,看见无为军方向失火,就赶忙回家。蔡九知府差了一只官船送他,半路上被张顺李俊他们抓住。
宋江大骂黄文炳,我与你往日五冤,近日无仇,你为什么要三番五次教唆蔡九知府杀我(和戴宗)!于是李逵帮宋江杀了黄文炳。
宋江说感谢大家不避凶险来相救,如今闹了两座城,一定会申报朝廷,不如大伙儿一起上梁山。大家都同意上梁山,先让朱贵和宋万回梁山报信,然后大伙儿分成五路启程:头一起便是晁盖、宋江、花荣、戴宗、李逵;第二起便是刘唐、杜迁、石勇、薛永、侯健;第三起便是李俊、李立、吕方、郭盛、童威,童猛;第四起便是黄信、张顺、张横、阮家三兄弟;第五起便是穆弘、穆春、燕顺、王矮虎、郑天寿、白胜。五起共二十八个头领。
白龙庙小聚会是二十九人,而分五次出发的总人数是二十八人,怎么人数对不齐呢? 少了谁呢? 让我们请python来帮忙。
使用python集合计算人员变动
首先将白龙庙小聚会的人名全部通过拆分字符串放入列表
x = "晁盖、花荣、黄信、吕方、郭盛、刘唐、燕顺、杜迁、宋万、朱贵、王矮虎、郑天寿、石勇、阮小二、阮小五、阮小七、白胜、张顺、张横、李俊、李立、穆弘、穆春、童威、童猛、薛永、李逵、宋江、戴宗" y = x.split("、") y,len(y)
再将出发的人拆分字符串放入列表
m = "晁盖、宋江、花荣、戴宗、李逵、刘唐、杜迁、石勇、薛永、侯健、李俊、李立、吕方、郭盛、童威、童猛、黄信、张顺、张横、阮小二、阮小五、阮小七、穆弘、穆春、燕顺、王矮虎、郑天寿、白胜" n = m.split("、") n, len(n)
列表转为集合set,使用减法查看两次不同的人。聚会集合o比出发集合p多的人,以及出发集合p比聚会集合o多的人:
o = set(y) p = set(n) o-p, p-o # ({'宋万', '朱贵'}, {'侯健'})
因此,我们发现出发的时候比聚会的时候少了两个人,是宋万和朱贵,他俩提前回梁山报信去了。比聚会时多的那个人是侯健,他是白龙庙小聚会之后入的伙。
晁盖宋江等走了三天,来到了黄门山,碰到了四位好汉,分别是摩云金翅欧鹏、神算子蒋敬、铁笛仙马麟和九尾龟陶宗旺。他们四位也入了伙,作为第六路启程。
大伙到了梁山,晁盖坐第一位,宋江第二位,吴用第三位,公孙胜第四位。后面的,梁山老人到左边坐,新入伙的到右边坐,一共是四十位头领。
一天,宋江说我还有一件大事,要下山走一遭。
欲知后市如何且听下回分解。