精华内容
下载资源
问答
  • 最近在写通过mybatis与数据库交互的接口,需要将数据库返回的结果集执行迭代遍历的操作。代码完成后突然想到,若前段传回数据异常,导致Sql的查询语句在限定条件下无法查到指定的数据,岂不是会在遍历的时候出现空...

    Mybatis+Mysql无查询数据时的返回值问题

    前言

    最近在写通过mybatis与数据库交互的接口时,需要将数据库返回的结果集执行迭代遍历的操作。代码完成后突然想到,若前端传回数据异常,导致Sql的查询语句在限定条件下无法查到指定的数据,岂不是会在遍历的时候出现空指针异常的隐藏bug?
    但是这样的情况在测试接口时故意传入无对应数据的限定条件情况下却并未发生,由此引发我的一番猜想:难道mybatis在查不到数据的时候返回的结果并非Null值?

    原本猜测可能出现空指针异常的代码:

    空指针异常代码 图示中我将数据库查询的List结果集不加任何校验直接进行遍历操作:按猜想若sql语句返回结果为空将发生空指针异常bug;
    但实际情况却是,无论sql语句是否查询到数据,该代码段都不会发生空指针异常错误

    • 这是为什么?难道是返回参数设定为List集合时,mybatis会自动将返回值变成非null类型吗?其他类型集合如set、map、类类型如String、Long返回在查询不到数据的情况下返回值是null吗?

      带着疑问我进行了一些测试:

    测试结果如下

    • mapper层代码:设定返回值类型 与mybatis的xml文件对应

    hguyguigiugygiyu

    • 测试代码:将返回值结果与null指针作判断 同时输出返回结果

    在这里插入图片描述

    • 测试结果:

    在这里插入图片描述

    由此知:

    1.当返回值类型设定为List<泛型类型无所谓>、set<泛型类型无所谓>时,sql语句查询无结果时的返回值将是一个空的集合:类似:[ ] 这种类型。此时无需对返回结果进行任何校验,因为返回的结果是一个空集合,遍历空集合时,遍历内逻辑将不会执行。同时不会出现空指针异常错误。

    并且对设定为List与Set类型的返回值进行空指针校验是无意义的
    也就是说List<String> test = iMapper.getTestDemo(param); if(test == null){ //逻辑代码 }
    这种校验没有意义,test值永远不为null 逻辑代码永远不会被执行;
    要对List、set类型返回结果进行是否为空值校验,必须校验他们的size大小,当size为0意味着查询结果为空

    2.当返回值为map、对象类型(String)返回值时。,sql语句查询无结果时将返回null值
    此时若直接对该map进行遍历操作便会出现空指针异常bug,因此必须对该返回结果进行是否为null的校验。

    Map<String,String> test = iMapper.getTestDemo(id);
    if(test == null) return;
    //此时 if内逻辑将可能执行

    同样的,map类型数据库查询结果不能用map.size进行是否有查询结果的校验,因为这样也会导致空指针异常。

    总结

    对数据库返回值进行处理时要小心,不同的返回集合类型将导致不同的空值校验逻辑:
    对List、set集合要进行 (值.size) 的校验。
    对Map与普通对象类型返回值要先进行ISNull校验,再进行 (值.size) 的校验(因为即使Map等类型不为null 也很有可能为 :“ 空集合”) 并且Map等类型不能直接进行(值.size)校验。

    由此才能保证此处校验不至于出现空指针异常bug

    展开全文
  • 集合习题

    2017-04-28 16:09:00
    基础习题 例1已知集合\(A=\{x\mid -2\leq x\leq 7\}\),集合\(B=\{x\...分析:集合A为定集,集合B为动集,又因为出现了条件\(B\subseteq A\),故需要针对集合B分类讨论如下: 1、当集合\(B=\varnothing\),则有\...

    基础习题

    例1已知集合\(A=\{x\mid -2\leq x\leq 7\}\),集合\(B=\{x\mid m+1< x<2m-1 \}\),若\(B\subseteq A\),则实数\(m\)的取值范围是什么?

    分析:集合A为定集,集合B为动集,又因为出现了条件\(B\subseteq A\),故需要针对集合B分类讨论如下:

    1、当集合\(B=\varnothing\)时,则有\(m+1\ge 2m-1\),解得\(m\leq 2\)

    992978-20170807192324096-1806505211.png

    2、当集合\(B\neq\varnothing\)时,必须满足三个条件,即\(\begin{cases}&m+1<2m-1\\&-2\leq m+1\\&2m-1\leq 7\end{cases}\),解得\(2<m\leq 4\)

    综上所述:实数\(m\)的取值范围是\(\{m\mid m\leq 4\}\)

    例1-1上例中是否存在实数\(m\),使得\(A\subseteq B\)?若存在,求其取值范围,若不存在说明理由。

    分析:自行画出草图可知,若存在满足题意的实数\(m\),则必满足条件\(\begin{cases}&m+1< -2\\&2m-1> 7\end{cases}\),解得\(m\in \varnothing\)。故这样的实数不存在。

    例2若集合\(B=\{x\mid m+1\leq x\leq 1-2m \}\),集合\(A=\{x\mid -2\leq x\leq 7\}\),若\(A\subsetneqq B\),求实数\(m\)的取值范围。

    992978-20170807195013205-34072997.png

    分析:自行画出草图可知,先列出条件\(\begin{cases}&m+1\leq-2\\&1-2m \ge 7\end{cases}\),解得\(m\leq -3\),接下来验证\(m=-3\)是否满足题意。

    \(m=-3\)时,\(A=[-2,7]\)\(B=[m+1,1-2m]=[-2,7]\),此时\(A=B\),不满足题意,舍去,故实数\(m\)的取值范围为\(\{m\mid m<-3\}\)

    例3已知集合\(A=\{2x,\cfrac{y-1}{x},1\}\),集合\(B=\{x^2,x+y,0\}\),若\(A=B\),求\(x+y\)=____________.

    分析:本题目就对应相等的方向上有\(A\rightarrow B\)\(B\rightarrow A\)两个方向,但是由\(B\rightarrow A\)比较简单,故求解如下

    \(0=2x\),推出集合A中分母为0,故只能是\(0=\cfrac{y-1}{x}\),故\(y=1\),此时集合\(A=\{2x,0,1\}\),集合\(B=\{x^2,x+1,0\}\),这时候的对应要么\(2x=x^2\)要么\(2x=x+1\)

    \(2x=x^2\)时,解得\(x=0或x=2\),当\(x=2\)时,集合\(A=\{4,0,1\}\),集合\(B=\{4,3,1\}\),验证都不满足题意;

    \(2x=x+1\)时,解得\(x=1\),验证得到此时\(A=\{2,0,1\}=B=\{1,2,0\}\),满足题意,则\(x=1\),故\(x+y=2\)

    例4(2015☆太原月考)已知集合\(M=\{(x,y)\mid y=x^2\}\),集合\(N=\{(x,y)\mid y=2^x\}\),则\(M\cap N\)的元素个数是几个?

    分析:应该比较容易想到\(M\cap N\)的元素个数就是两个函数的图像的交点个数,但难点是这两个函数图像的交点,绝大多数学生会画错的,在\(x<0\)处有一个交点,在\(x>0\)处应该有两个交点,因为\(x=2\)\(x=4\)时,\(x^2=2^x\)。故所求的元素个数是3个。

    例5已知集合\(A=\{0,1,2\}\),集合B满足\(A\cup B=\{0,1,2\}\),则满足题意的集合B的个数是几个?

    分析:由题目可知,本题实质是求集合A的所有子集的个数,故有\(2^3=8\)个。

    例6已知集合\(A=\{-1,1\}\),集合B满足\(A\cup B=\{-1,0,1\}\),则满足题意的集合B的个数是几个?

    分析:由于要求\(A\cup B=\{-1,0,1\}\),故集合\(B\)的构成分为两步:第一步必须选必选元素\(0\),第二步从可选元素\(-1,1\)中分别选出0个,1个,2个元素,即就是求集合\(\{-1,1\}\)的所有子集的个数,故有\(2^2=4\)个。

    例7(2017铜川模拟)若集合\(A=\{x \in R\mid ax^2-3x+2=0\}\)中只有一个元素,求\(a\)的值。

    分析:由于给定的方程\(ax^2-3x+2=0\)是仿二次方程,故需要针对\(a\)分类讨论:

    \(a=0\)时,\(x=\cfrac{2}{3}\),此时\(A=\{\cfrac{2}{3}\}\)满足题意;

    \(a\neq 0\)时,二次方程必须有两个相等的根,由\(\Delta=0\)得到\(a=\cfrac{9}{8}\)

    \(a=0\)\(a=\cfrac{9}{8}\)

    例8设集合A=\(\{x\in R\mid 2x^2+ax-a^2=0\}\)\(1\in\) A,\(-2\not\in\) A。

    (1)求\(a\)的值,并写出A的所有子集。

    (2)若集合B=\(\{x\in R\mid x^2+(m-3)x+m=0\}\),\((C_RA)\cap B=\varnothing\),求实数\(m\)的集合。

    【解析】(1)因为\(1\in A\),所以\(2×1^2+a×1-a^2=0\),解得\(a=-1\)\(a=2\)

    \(a=2\)时,\(A=\{1,-2\}\),与已知\(-2\not\in A\)矛盾,所以\(a\neq 2\)

    \(a=-1\)时,\(A=\{ x\in R\mid 2x^2-x-1=0\}=\{1,-\cfrac{1}{2}\}\),符合题意。

    所以A的所有子集为\(\varnothing\)\(\{1\}\)\(\{-\cfrac{1}{2}\}\)\(\{1,-\cfrac{1}{2}\}\)

    (2)因为\((C_RA)\cap B=\varnothing\),所以\(B\subseteq A\),由于方程\(x^2+(m-3)x+m=0\)的判别式\(\Delta=(m-3)^2-4m=m^2-10m+9\),所以按照判别式的符号分类讨论如下:

    ①当\(\Delta<0\)\(1<m<9\)时,集合B为空集,符合题意。

    ②当\(\Delta=0\)\(m=1\)\(m=9\)时,若\(m=1\),则\(B=\{1\}\),符合题意,若\(m=9\),则\(B=\{-3\}\),不符合题意,舍去。

    ③当\(\Delta>0\)\(m<1\)\(m>9\)时,集合\(B\)有两个元素,所以\(B=A\),所以\(\begin{cases}-\cfrac{1}{2}+1=-(m-3)\\(-\cfrac{1}{2})\times1=m\end{cases}\)矛盾,舍去。所以实数\(m\)的值构成的集合为\([1,9)\)

    例9已知集合\(A=\{1,2,3,4,5\}\)\(B=\{x-y\mid x\in A,y\in A,x-y\in A\}\),则\(B\)中所含元素的个数为 (  )

    A.3 \(\hspace{2cm}\) B.6 \(\hspace{2cm}\) C.8 \(\hspace{2cm}\) D.10

    【解析】选D,由\(x \in A\)\(y \in A\)\(x-y=0\)\(x-y=\pm1\)\(x-y=\pm2\)\(x-y=\pm3\)\(x-y=\pm4\),所以集合\(B=\{(2,1),(3,1),(4,1),(5,1),(3,2),(4,2),(5,2),(4,3), (5,3),(5,4)\}\),所以集合\(B\)有10个元素。

    例10若集合\(A=\{x\mid (k+2)x^2+2kx+1=0\}\)有且仅有两个子集 ,则实数\(k\)的取值为 【】

    \(A.2或-1\) \(\hspace{2cm}\) \(B.-2或-1\) \(\hspace{2cm}\) \(C.-2\) \(\hspace{2cm}\) \(D.\pm 2或-1\)

    分析:有题目可知,集合\(A\)有且仅有两个子集,说明集合\(A\)应该为单元素集合,

    从而说明仿二次方程\((k+2)x^2+2kx+1=0\),可能有一次方程和二次方程两种情形。

    \(k=-2\)时,原方程变形为一次方程\(-4x+1=0\),仅有一个解,适合题意;

    \(k\neq -2\)时,原方程要仅有一个解,则必须\(\Delta =0\),即\((2k)^2-4\cdot(k+2)\cdot 1=0\),解得\(k=2\)\(k=-1\),满足题意,

    综上所述,实数\(k\)的取值为\(\pm 2或-1\),故选\(D\)

    例11若集合\(M=\{0,1,2\}\),集合\(N=\{(x,y)\mid x-2y+1\ge 0且x-2y-1\leq 0,x,y\in M\}\),则集合\(N\)的非空真子集的个数为 【】

    \(A.30\) \(\hspace{2cm}\) \(B.14\) \(\hspace{2cm}\) \(C.16\) \(\hspace{2cm}\) \(D.32\)

    分析:由于\(x,y\in M\),集合\(M=\{0,1,2\}\),故点\((x,y)\)的所有取值情形有9种,

    即有\((0,0)\)\((0,1)\)\((0,2)\)\((1,0)\)\((1,1)\)\((1,2)\)\((2,0)\)\((2,1)\)\((2,2)\)

    将其分别代入条件\(x-2y+1\ge 0\)\(x-2y-1\leq 0\)验证,可知,\(N=\{(0,0),(1,0),(1,1),(2,1)\}\)

    故集合\(N\)的非空真子集的个数为\(2^4-2=14\),选\(B\)

    例12已知集合\(A=\{x\mid 2x^2-3x-2\leq 0\}\)\(B=[a,a+2]\),若\(A\cap B=B\),则实数\(a\)的取值范围是【】

    $A.[-\cfrac{5}{2},-\cfrac{1}{2}]$ $B.[-\cfrac{1}{2},0]$ $C.[-\cfrac{1}{2},2]$ $D.[0,2]$

    分析:由\(a+2\leq 2\)\(a\ge -\cfrac{1}{2}\),得到\(a\in [-\cfrac{1}{2},0]\),故选\(B\)

    例13【2019届高三理科数学第三轮模拟训练题】设集合\(A=\{x |x^2\leqslant x \}\)\(B=\{x |\cfrac{1}{x}\geqslant 1\}\),则\(A\cap B\)=【】

    $A.(-\infty,1]$ $B.[0,1]$ $C.(0,1]$ $D.(-\infty,-1]\cup (0,1]$

    分析:训练解不等式和集合运算,选\(C\).

    例14【三轮模拟】设集合\(M=\{x\in R |(x-1)^2\leqslant 1\}\)\(P=\{x\in R |\cfrac{x-1}{x+2}\leqslant 0\}\),则\(M\cap P\)=【】

    $A.(-2,1]$ $B.[-1,3]$ $C.[0,1]$ $D.(-2,-1]$

    分析:训练解不等式和集合运算,选\(C\).

    拔高习题

    例1(2016.湖北七市联考)已知集合\(P=\{n|n=2k-1,k\in N^*,k\leq 50\)\(Q=\{2,3,5\}\),则集合\(T=\{xy|x\in P,y\in Q\}\)中元素的个数为多少?

    分析:集合\(P\)中分别有50个元素,\(Q\)中分别有3个元素,两两相乘,不计重复共有\(50\times 3=150\)个元素,其中重复元素可以这样统计:

    \(x\in P,y=2\)时,\(xy\)一定时偶数,而\(x\in P,y=3\)\(x\in P,y=5\)时的\(xy\)值为奇数,二者不会重复;

    但是\(x\in P,y=3\)\(x\in P,y=5\)时的\(xy\)值都是奇数,有可能重复;具体的重复的个数计算如下:

    \(3(2k_1-1)=5(2k_2-1)\)\(k_1,k_2\in N^*,1\leq k_1,k_2\leq 50\),变形为\(k_2=\cfrac{3k_1+1}{5}\),当\(k_1=3,8,13,18,23,28,33,38,43,48\)时,对应的\(k_2\in N^*\),故重复的元素有10个,故集合\(T=\)中元素的个数为\(150-10=140\)个。

    例2已知集合\(A=\{x\in Z\mid x^2-3x+2\leq 0\}\)\(B=\{x \mid \cfrac{1}{2}\leq 2^x\leq 4\}\),则\(A\cap B\)的子集的个数是【 】

    $A.1$ $B.2$ $C.3$ $D.4$

    提示:\(A\cap B=\{1,2\}\),故选\(D\).

    转载于:https://www.cnblogs.com/wanghai0666/p/6782025.html

    展开全文
  • union用法:返回和多个集合合并后的新集合(如图所示A与B的相交部分)、”|“: union的代表符号update(*others): 和多个集合合并,就地修改update的用法:= : update的代表符号交集:集合A和B由所有属于A且属于B...

    union用法:

    1250252-20171008125547262-325386880.png

    返回和多个集合合并后的新集合(如图所示A与B的相交部分)、

    ”|“: union的代表符号

    update(*others): 和多个集合合并,就地修改

    update的用法:

    1250252-20171008125630621-2106302534.png

    = : update的代表符号

    交集:

    copycode.gif

    集合A和B由所有属于A且属于B的元素组成的集合(如下图所示):

    intersection(*others)

    返回多个集合的交集(如下图所示):

    1250252-20171008125729762-1449297512.png

    & :intersection的代表符号

    intersection_update(*others)

    获取和多个集合的交集,并就地修改

    &= :intersection_updated 的表示符号

    copycode.gif

    差集

    copycode.gif

    差集

    集合A和B,由所有属于A且不属于B的元素组成的集合(如图所示):

    1250252-20171008125946309-28527298.png

    diffrernce(*others)的用法

    1250252-20171008130006231-2019358603.png

    返回多个集合的差集

    — : 表示为 difference的符号

    difference_(update):

    获取和多个集合的差集并就地修改

    1250252-20171008130017949-2117144376.png

    —= : 表示为difference_(update)的符号

    copycode.gif

    对称差集

    copycode.gif

    对称差集:

    集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B)U(B-A):

    1250252-20171008130124856-2118197144.png

    symmetric_differece(other)

    1250252-20171008130140215-1604991058.png

    返回和另一个集合的差集

    ”^“ 表示为symmetric_differece的表示符号

    symmetric_differece_update(other)

    1250252-20171008131540403-1725523284.png

    获取另一个集合的差集并就地修改

    ”^=“ 表示为symmetric_differece_update(other)的使用符号

    issubset(other)、<=:

    判断当前集合是否是另一个集合的子集

    set1

    判断set1是否是set2的真子集

    issuperset(other)、>=

    判断set1是否是set的真超集

    isdisjoint(other)

    当前集合和另一个集合没有交集;没有交集,返回True

    copycode.gif

    集合练习:

    copycode.gif

    共同好友;

    你的好友A,B,C 他的好友C,B,D, 求共同好友:

    交集问题: {'A','B','C'}.intersection({'B','C','D'})

    1250252-20171008130340168-849694970.png

    微信群提醒:

    XXX与群里其他人都不是微信朋友关系

    并集:userid in (A|B|C|...)==FLASE, A , B , C等是好友的并集,用户ID不在这个并集中,说明他和任何人都不是朋友

    权限判断:

    有一个API,要求同时具备A,B,C权限才能访问,用户权限B,C,D,判断该用户能否访问该API

    API集合为A,权限集合为P;A-P={},AP为空集,说明 P包含A

    A.issubset(P)也行,A是P的子集

    A&P=A也可以

    有一个API,要求具备A,B,C任意一项权限就可访问,用户权限B,C,D ,判断该用户能否访问该API

    一个总任务列表,储存所有任务,一个完成的任务列表。找出未完成的任务

    1250252-20171008130406387-380184395.png

    设所有的工作为ALL,已完成的工作为COMPLETED 用所有的减去已完成的得出未完成的

    copycode.gif

    集合练习:

    随机产生2组各个数字的列表,如下要求:

    每个数字取值范围[10,20]

    统计20个数字中,一共有多少个不同的数字?

    2组中,不重复的数字有几个?分别是什么?

    2组中,重复的数字有几个?分别是什么?

    1250252-20171008130530059-775002204.png

    答案依次为:

    1250252-20171008130550637-1939626583.png

    字典

    copycode.gif

    字典:

    字典为 key-vlaue 键值对的数据的集合;字典是可变的,无序的,key不重复

    字典的定义,初始化:

    字典常用的用法为 : dict(**kwargs) 使用name=value 对一个字典初始化

    dict(可迭代,**kwarg)使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是一个二元结构

    dict(mapping,**kwarg)使用一个字典构造另外一个字典

    d={'a':10,'b':20,'c':None,'d':[1,2,3]}

    字典元素的访问:

    d[key]: 返回key对应的值value;key不存在抛KeyError异常

    get(key,[,default]): 返回key对应的值value,key不存在返回缺省值,如果没有设置缺省值返回None

    setdefault(key[,default]):返回key对应的值value,key不存在,添加kv对.值为default,并返回default,如果default没有设置,缺省为None

    字典增加和修改:

    d[key]=value :将key对应的值修改为value(新值),key不存在添加新的kv对

    update([other])-->None:

    使用另一个字典的kv对更新本字典;key不存在,就添加;key存在,覆盖已经存在的key对应的值;就地修改

    字典删除:

    pop(key[,default]):

    key存在,移除它,并返回他的value

    key不存在,返回给定的default

    default未设置,key不存在则排除KeyError异常

    popitem()

    移除并返回一个任意的键值对

    字典为空,抛出KeyError异常

    clear() 清空字典

    字典删除:

    del语句

    copycode.gif

    字典练习:

    1250252-20171008130743903-1486412815.png

    copycode.gif

    第二题:

    import random

    randomnumber=[]

    countlist=[]

    randomdict={}

    sortlist=[]

    for p in range(100):

    randomnumber.append(random.randrange(-1000,1000))

    countlist.append(randomnumber.count(randomnumber[p]))

    randomdict[randomnumber[p]]=countlist[p]

    for k,v in randomdict.items():

    sortlist.append((k,v))

    sortlist.sort()

    print(sortlist)

    copycode.gif

    输出结果:

    1250252-20171008130819762-1847084953.png

    习题一:

    copycode.gif

    nums=input('>>>')

    count_list=[]

    sort_list={}

    sort_list1=[]

    for i in range(len(nums)):

    count_list.append(nums.count(nums[i]))

    sort_list[nums[i]]=count_list[i]

    for k,v in sort_list.items():

    sort_list1.append((k,v))

    print(sort_list1)

    copycode.gif

    输出结果:

    1250252-20171008130906356-1122965304.png

    习题三:

    copycode.gif

    import random

    s1=[]

    same_alpha=[]

    count_list={}

    diff_alpha=[]

    alpha='abcdefghijklmnopqrstuvwxyz'

    for _ in range(100):

    s1.append(random.choice(alpha)+random.choice(alpha))

    same_alpha.append(s1.count(s1[_]))

    count_list[s1[_]]=same_alpha[_]

    #进行排序

    for k,v in count_list.items():

    diff_alpha.append((k,v))

    diff_alpha.sort(reverse=True)

    print(diff_alpha)

    copycode.gif

    输出结果为:

    1250252-20171008131003449-1998683933.png

    选择排序:

    copycode.gif

    选择排序使用方法

    简单选择排序:

    属于选择排序,两两比较大小,找出最大值和最小值;被放在固定的位置,固定位置一般在某一端

    结果分为升序和降序

    降序:n个数由左至右,索引从0到-1,两两依次比较,并记录最大值,此轮所有数比较完毕,将最大数和索引0数比较,如果最大数就是索引1,不交换;第二轮由1开始比较,找到最大值,将它和索引1位置交换,如果他就在索引1则不叫唤,依次类推,每次左边都会固定下一个大数

    升序:

    和降序相反

    简单排序总结:

    简单排序需要 数据一轮轮比较,并在每一轮中发现极值

    没有办法知道当前轮是否已经达到排序要求,但可以知道极值是否在目标索引位置上

    遍历次数1,....,n-1和n(n-1)/2

    时间复杂度为O(n的平方)

    减少了交换次数,提高了效率,性能略好于冒泡法

    copycode.gif

    选择排序练习:

    1250252-20171008131128574-302163384.png

    将上述列表第二列利用选择排序进行排序

    copycode.gif

    m_list=[[1,9,8,5,6,7,4,3,2],

    [6,5,8,7,9,4,2,1,3],

    [9,8,7,6,5,4,3,2,1]]

    nums = m_list[1]

    length=len(nums)

    print(nums)

    for i in range(length):

    maxindex=i

    for j in range(i+1,length):

    if nums[maxindex] < nums[j]:

    maxindex = j

    # print(nums)

    if i != maxindex: #第二次判断两个索引是否相等,若相等则说明该值已是最大,无需进行下面的命令操作,否则则进行下面的程序

    tmp = nums[maxindex] #将列表中最大的值赋给另一个参数

    nums[maxindex]=nums[i] #将列表中maxindex索引的值刷新为i索引的值

    nums[i]=tmp #将列表中i的索引的值刷新为tmp的最大值

    print(nums)

    copycode.gif

    输出结果为:

    1250252-20171008131205340-819780546.png

    回顾之前所学知识,并以新的所学知识做一些以前的习题:

    求杨辉三角的第5列的第4个值

    copycode.gif

    m=5

    k=4

    traingle=[]

    for i in range(m):

    row=[1]

    traingle.append(row)

    for j in range(1,i):

    if i == 0:

    continue

    row.append(traingle[i-1][j-1]+traingle[i-1][j])

    row.append(1)

    traingle.append(row)

    print(traingle)

    print(traingle[m-1][k-1])

    copycode.gif

    1250252-20171008131339684-1875570365.png

    习题二:

    1250252-20171008131712137-1102137182.png

    copycode.gif

    lst=[[1,2,3],[4,5,6],[7,8,9]]

    for i in range(len(lst)): #依次循环3个列表

    for j in range(i): #本次循环的是列表中的索引值

    lst[i][j],lst[j][i]=lst[j][i],lst[i][j] #将列表的值进行交换

    print(lst)

    for k in lst: #重新排序

    print(k)

    copycode.gif

    输出结果为:

    1250252-20171008131740153-635594603.png

    习题3:

    1250252-20171008131813887-918494444.png

    copycode.gif

    firstlist=[[1,2,3],[4,5,6]] #创建一个包含两列数的列表

    secondlist=[] #创建一个空列表

    m=len(firstlist) #将第一个列表的长度输出给m

    for i in range(m+1): #

    secondlist.append([0]*m)#循环三次,并开辟3个介为0的子列表

    print(secondlist)

    print(firstlist)

    for i in range(m): #

    for j in range(m+1): #利用两层循环来读取索引上的数值

    secondlist[j][i]=firstlist[i][j] # 将对应索引上的值进行交换

    print(secondlist)

    copycode.gif

    输出结果为:

    1250252-20171008131843528-1065557783.png

    习题三:

    随机生成10个数字;

    每个数字的取值范围不超过20

    分别统计重复与不重复的数字有几个:

    copycode.gif

    import random

    nums=[]

    for _ in range(10):

    nums.append(random.randrange(21))

    print('nums1={}'.format(nums))

    print()

    随机生成10个20以内的数字

    ————————————————————————

    length=len(nums)

    samenums=[]

    diffnums=[]

    states = [0]*length

    for i in range(length):

    flag=False

    if states[i]==1:

    continue

    for j in range(i+1,length):

    if states[j]==1:

    continue

    if nums[i]==nums[j]:

    flag=True

    states[j]=1

    if flag: #有重复

    samenums.append(nums[i])

    states[i]=1

    else:

    diffnums.append(nums[i])

    print("Same numbers={1},counter={0}".format(len(samenums),samenums))

    print("different numbers={1},counter={0}".format(len(diffnums),diffnums))

    print(list(zip(states,nums)))

    copycode.gif

    本文转载

    展开全文
  • 使用defaultdict以后,判断集合是否为空集的方法 for u in user_trust.keys(): if nodes1[u] == set(): # 不是node1 == {} !!! continue i = random.sample(nodes1[u], 1) print(i) ...

    使用defaultdict以后,判断集合是否为空集的方法

    for u in user_trust.keys():
        if nodes1[u] == set():      # 不是node1 == {} !!!
            continue
        i = random.sample(nodes1[u], 1)
        print(i)
    
    展开全文
  • 集合

    2018-06-07 23:19:00
    第十章 Collection集合框架 常用方法:c.add( E e);//向集合中追加元素c.size();//集合中元素的个数c.isEmpty();//判断集合中是否有元素,...//清空集合,使集合中无元素,size()=0,isEmpty()truec.remove(Objec...
  • ) 并且 A\mathscr{A}A 集族中的任何集合元素 , 都对应 SSS 集合中的某一个元素 称 A\mathscr{A}A 集族 是以 SSS 集合 指标集的集族 SSS 集合A\mathscr{A}A 集族 的 指标集 记作 : A={Aα∣α∈S}\mathscr{A} =...
  • JAVA——集合

    2018-10-17 19:20:45
    所有抽象出来的数据结构和操作(算法)统称Java集合框架 主要分类 Collection接口 定义:Collection是所有集合的顶级接口,规定了所有集合都应当具备的方法。 有两个常用的派生接口: java.util.list:可重复集且...
  • 集合框架

    2018-11-02 09:20:08
    容器中添加任何数据,count 变量的取值为 0 ,表示该容器是 “空” 的 ( 不是 null ) 以后需要 “清空” 容器,只需要保证 count 0 ,即可视 容器 “空” 的 f) 重写 toString 方法 我们已经知道,...
  • 集合(Sets)

    2011-12-27 10:45:00
    一个集合类型的取值范围,是构成它的有序类型(称为基础类型)的幂,也就是说,集合可能的值是基础类型的所有子集,也包含空集。基础类型可能的值不要超过256 个,并且它们的序数必须在 0 到255之间。任何像下面的...
  • 离散数学之集合论 【下】 一、等价关系与划分 等价关系(equivalent relation)定义 〉 等价关系R定义: 〉 A上的自反、对称、传递的二元关系 〉 xRx;xRy→yRx;xRy∧yRz→xRz 〉 例子: 〉 三角形的相似、全等...
  • 一.知识归纳:1.集合的有关概念。1)集合(集):某些指定的对象集在一起就成为一个集合(集).其中每一个对象叫元素注意:①集合与...A,则a≠b)和无序性({a,b}与{b,a}表示同一个集合)。③集合具有两方面的意义,即:...
  • 用二进制操作求解集合所有子集

    千次阅读 2020-09-16 22:49:02
    比如集合S ={“A”,“B”},其子集分别,“A,B” ,“A”, “B” ,NULL 四个。其中S本身和空集都可以认为是S的子集。 算法描述 以S ={“A”,“B”,“C”}例,集合中包含三个元素,那么让S对应3个位长的二进制数,在...
  • 集合 —— 子集

    2019-08-07 18:56:55
    集合论中,子集是一个较常用的概念,给出一个集合{0,1,2,...,n-1} ,常需要生成所有的子集。 生成子集有三种方法:增量构造法、位向量法、二进制法 其中,二进制法除了可以生成子集,还是一种集合的表示方法...
  • 集合概论

    2021-05-14 01:00:04
    1.集合是具有某种特定性质,具体的或抽象的对象汇集的总体2.集合的表示有枚举法和描述法3.集合有三个性质——确定性,无序性,互异性4.集合S的所有元素都属于集合T,称S是T的子集5.如果...
  • 集合的含义与表示

    千次阅读 2017-12-27 08:59:12
    2.元素与集合的关系若元素a集合A中,则aA (a属于A) 元素a不在集合A中,则aA (a属于A) 3.元素的特性a.确定性 b.无序性 c.互异性 4.常用数集的表示自然数集:N 正整数集:N+、N* 整数集: Z
  • 1. java.util.Collection: 集合,用于存储一组元素。提供了维护集合的相关操作。其派生了两个子接口:List:可重复集 Set:不可重复集。元素是否重复是依靠自身equals方法比较的结果而定的。 Collection c=new ...
  • 甘肃省古浪县第二中学2019-2020学年高二下学期期中考试数学文试题 一单选题 ) 1. 若集合集合 A B C D ) 2. 若 则函数 的最小值 A2 B3 C4 D5 ) 3.... 若关于 的不等式 的解集为空集则实数 的取值范围A B C D
  • 它是一种有序的集合(注意其中元素的类型不要求相同),可以随时添加和删除其中的元素。1 ) 初始化list1 = [] #一个空列表list2 = [1, 2, 3, 5] #一个非空列表2 ) 基本操作追加元素到末尾:list1.append(6)把元素...
  • 集合类型

    2006-12-13 21:30:00
    集合类型 前面几章里,...在TURBO PASCAL中,集合的意义和数学中比较类似,但是为了编译的效率起见,TURBO PASCAL限制了集合的数量不能无限制的大,必须有一个范围。 一、集合的定义 在PASCAL中,我们把有限个同
  • 集合中的基本关系 观察以下几组集合,并指出它们元素间多的关系: A={1,2,3} , B={1,2,3,4,5} ; 很显然 A集合包含于B集合 ...一般地,对于两个集合A与B,如果集合A中的任何一个元素都是集合B的元素, 我...
  • python set集合

    2019-09-25 21:58:17
    集合set 可变的 无序的 不重复的元素集合 set定义 初始化 set() 生成一个空集合 set(iterable) 可通过可迭代对象生产一个新的集合 s1 = set() s2 = set(range(5)) s3 = set(list(range(10))) s4 = {...
  • swift资源库—3—字典/集合/数组

    千次阅读 2016-05-24 17:26:47
    持续更新中,纯笔记记录哦~ 相关的代码需要的话,还请留邮箱,后续我会更新到github上~~ 这里是本人学习swift的系列文章,相关知识还...Swift的Array、Set和Dictionary类型被实现泛型集合。因此,它所存储的元素的类
  • 集合论—笛卡尔积与二元关系

    千次阅读 2019-05-28 17:49:55
    设AAA、BBB为集合,用AAA中的元素作为第一元素,BBB中的元素作为第二元素,构成有序对。所有这样的有序对组成的集合称作AAA和BBB的笛卡尔积,记作A×BA×BA×B.A×B={&lt;x,y&gt;∣x∈A,y∈B}A×B=\{&lt...
  • python 集合详解

    2019-09-24 11:40:55
    一个个字符组成的有序的序列,字符的集合 使用单引,双引,三引 引住的字符序列 字符不可变的对象 bytes定义 bytes不可变字节序列 使用b前缀定义 只允许基本ASCII使用字符形式 支持索引 返回对应的数...
  • 集合总结

    2018-10-20 11:23:50
    size等于0的时候,这个集合就是一个空集空集并不是指null。  boolean contains(Object o):判断当前集合是否包含给定元素,判定标准是看给定的对象是否与集合现有的元素存在  equals比较true,若有则包含,...
  • Collection 集合类是Java数据结构的实现,是 java.util 包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java中的集合类可以分为两大类:一类是实现Collect
  • redis学习之基本数据类型集合 集合 redis底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表... key 不是集合类型,返回一个错误。 127.0.0.1:6379> sadd
  • 位运算之求集合的所有子集

    千次阅读 2015-08-10 12:47:58
    位运算之求集合的所有子集 分类: 结构/算法 c/c++刁钻问题各个击破2011-08-03 17:38 3130人阅读 评论(5) 收藏 举报 c数据结构测试算法emailqq   摘要 刚刚完成一篇利用位运算高效地、巧妙地来解决求...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,600
精华内容 1,040
关键字:

当集合a为空集时a的取值范围