python集合运算案例

11人阅读 评论(0) 收藏 举报
分类:

python生成不重复随机数放在列表中的效率比较

import random
import time

def RandomNumbers(number, start, end):
    '''使用列表来生成number个介于start和end之间的不重复随机数'''
    data = []
    n = 0
    while True:
        element = random.randint(start, end)
        if element not in data:
            data.append(element)
            n += 1
        if n == number - 1:
            break
    return data
def RandomNumbers1(number, start, end):
    '''使用列表来生成number个介于start和end之间的不重复随机数'''
    data = []
    while True:
        element = random.randint(start, end)
        if element not in data:
            data.append(element)
        if len(data) == number:
            break
    return data
def RandomNumbers2(number, start, end):
    '''使用集合来生成number个介于start和end之间的不重复随机数'''
    data = set()
    while True:
        data.add(random.randint(start, end))
        if len(data) == number:
            break
    return data
start = time.time()
for i in range(1000):
    RandomNumbers(1000, 1, 10000)
print('Time used:', time.time()-start)

start = time.time()
for i in range(1000):
    RandomNumbers1(1000, 1, 10000)
print('Time used1:', time.time()-start)

start = time.time()
for i in range(1000):
    RandomNumbers2(1000, 1, 10000)
print('Time used2:', time.time()-start)

得到的结果是
==================== RESTART: C:/Users/xuzm/Desktop/比较.py ====================
Time used: 24.607422828674316
Time used1: 24.069069623947144
Time used2: 4.816216945648193
>>> 

可见:
append方法对空裂变追加元素的方法效率远不及add方法
查看评论

python 集合运算

集合类型操作符(所有的集合类型)联合( | )联合(union)操作和集合的OR(又称可兼析取(inclusive disjunction))其实是等价的,两个集合的联合是一个新集合,该集合中的每个元...
  • facevoid
  • facevoid
  • 2010-03-05 11:39:00
  • 12994

python集合运算

编程练习题——马路上的路灯题目描述城市E的马路上有很多路灯,每两个相邻路灯之间的间隔都是1公里。小赛是城市E的领导,为了使E城市更快更好的发展,需要在城市E的一段长度为M的主干道上的一些区域建地铁。这...
  • weixin_38241812
  • weixin_38241812
  • 2017-09-10 21:24:33
  • 89

python学习笔记(五)集合(set)

set 拥有类似 dict 的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set 中的元素不可重复,这就类似 dict 的键. set 也有一点 list 的特点...
  • qq_36330643
  • qq_36330643
  • 2017-07-19 23:01:12
  • 126

SQL T型结构的累加方式 over

select shipper.trans_no,        shipper_line.part_id as customer_id,        shipper_line.quantity,  ...
  • mfkpie
  • mfkpie
  • 2014-07-13 18:01:20
  • 761

蓝桥杯 集合运算(set)

算法训练 集合运算   时间限制:1.0s   内存限制:512.0MB        问题描述   给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。 ...
  • qq_27601815
  • qq_27601815
  • 2017-03-19 12:56:18
  • 293

实现集合各种运算的程序

  • 2011年01月05日 22:34
  • 51KB
  • 下载

poj 4088:集合运算

poj 4088:集合运算 题目:(至于4089,那个问题做过,使用归并思想,所以没有写) 描述 小张需要从一批数量庞大的正整数中挑选出第k小的数,因为数据量太庞大,挑选...
  • cqs_2012
  • cqs_2012
  • 2014-10-27 17:12:12
  • 1549

蓝桥杯——集合运算

java集合运算:求交集,并集,集合差
  • KevinBetterQ
  • KevinBetterQ
  • 2017-03-28 19:43:01
  • 461

3.2关系代数:传统的集合运算和专门的关系运算

传统的集合运算包括并,差,交,笛卡儿积运算 1.并 关系R和关系S的所有元组合并,再删去重复的元组,组成一个新的关系,即不允许有重复的行 2.差 关系R和关系S的差是由属于R但不属于S的所有元组组成的...
  • csdnwjd
  • csdnwjd
  • 2017-09-13 20:08:17
  • 786

蓝桥杯 集合运算(Java)

问题描述 : 给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。输入格式 : 第一行为一个整数n,表示集合A中的元素个数。    第二行有n个互不相同的用空格隔开的整数,表示集合A中的元...
  • CR_fun
  • CR_fun
  • 2018-02-08 23:49:59
  • 158
    个人资料
    等级:
    访问量: 338
    积分: 206
    排名: 90万+
    文章存档