博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby 集合操作(和 Python3 集合操作进行对比)
阅读量:4229 次
发布时间:2019-05-26

本文共 3663 字,大约阅读时间需要 12 分钟。

集合内建方法

Ruby 中使用集合有时候需要 require ‘set' 一下

# Ruby[1] pry(main)> require 'set'=> false[2] pry(main)> s1 = Set[3, 4, 5]=> #
[3] pry(main)> s1 = Set.new([3, 4, 5])=> #
[9] pry(main)> s1 = Set[1, 1, 3, 4, 5]=> #
# Python3>>> set([3, 4, 5]){3, 4, 5}>>> set([1, 1, 3, 4, 5]){1, 3, 4, 5}

set.union  other_set(set | other_set)

# Ruby[10] pry(main)> s1 = Set[3, 4, 5]=> #
[11] pry(main)> s2 = Set[3, 1, 5]=> #
[12] pry(main)> s1.union s2=> #
[13] pry(main)> s1 + s2=> #
[14] pry(main)> s1 | s2=> #
# Python3>>> s1 = set([3, 4, 5])>>> s2 = set([3, 1, 5])>>> s1.union(s2){1, 3, 4, 5}>>> s1 | s2{1, 3, 4, 5}

set.intersection  other_set(set & other_set)

# Ruby[15] pry(main)> s1 = Set[3, 4, 5]=> #
[16] pry(main)> s2 = Set[3, 1, 5]=> #
[17] pry(main)> s1.intersection s2=> #
[18] pry(main)> s1 & s2=> #
# Python3>>> s1 = set([3, 4, 5])>>> s2 = set([3, 1, 5])>>> s1.intersection(s2){3, 5}>>> s1 & s2{3, 5}

set ^ other_set

# Ruby[24] pry(main)> s1 = Set[3, 4, 5]=> #
[25] pry(main)> s2 = Set[3, 1, 5]=> #
[26] pry(main)> s1 ^ s2=> #
[27] pry(main)> (s1 | s2) - (s1 & s2)=> #
# Python3>>> s1 = set([3, 4, 5])>>> s2 = set([3, 1, 5])>>> s1 ^ s2{1, 4}>>> (s1 | s2) - (s1 & s2){1, 4}

set - other_set

# Ruby[19] pry(main)> s1 = Set[3, 4, 5]=> #
[20] pry(main)> s2 = Set[3, 1, 5]=> #
[21] pry(main)> s1 - s2=> #
[22] pry(main)> s2 -s1=> #
# Python3>>> s1 = set([3, 4, 5])>>> s2 = set([3, 1, 5])>>> s1 - s2{4}>>> s2 -s1{1}

set.add(set.add?)

set.add? item 表示如果元素已经添加过,则执行结果返回值为 nil。当 item 没存在集合中时,执行等价于 set.add。

# Ruby[44] pry(main)> s1 = Set[3, 4, 5]=> #
[45] pry(main)> s1.add 6=> #
[51] pry(main)> s1 << 7=> #
[87] pry(main)> s1.add? 5=> nil[88] pry(main)> s1.add? 6=> #
# Python3>>> s1 = set([3, 4, 5])>>> s1.add(6)>>> s1{3, 4, 5, 6}

set.clear

# Ruby[48] pry(main)> s1 = Set[3, 4, 5]=> #
[49] pry(main)> s1.clear=> #
# Python3>>> s1 = set([3, 4, 5])>>> s1.clear()>>> s1set()

set.count

# Ruby[63] pry(main)> s1 = Set[3, 4, 5]=> #
[64] pry(main)> s1.count=> 3
# Python3>>> s1 = set([3, 4, 5])>>> len(s1)3

set.delete(set.delete?)

set.delete? item 表示如果元素已经不存在,则执行结果返回值为 nil。当 item 存在集合中时,执行等价于 set.delete。

# Ruby[90] pry(main)> s1 = Set[3, 4, 5]=> #
[91] pry(main)> s1.delete 5=> #
[92] pry(main)> s1.delete? 5=> nil
# Python3>>> s1 = set([3, 4, 5])>>> s1.remove(5)>>> s1{3, 4}>>> s1.remove(5)Traceback (most recent call last):  File "
", line 1, in
KeyError: 5

set.empty?

# Ruby[37] pry(main)> s1 = Set[3, 4, 5]=> #
[38] pry(main)> s1.empty?=> false[39] pry(main)> s2 = Set[]=> #
[40] pry(main)> s2.empty?=> true
# Python3>>> s1 = set([3, 4, 5])>>> len(s1) == 0False>>> s2 = set()>>> len(s2) == 0True

set.include?

# Ruby[28] pry(main)> s1 = Set[3, 4, 5]=> #
[29] pry(main)> s1.include? 3=> true[30] pry(main)> s1.member? 3=> true
# Python3>>> s1 = set([3, 4, 5])>>> 3 in s1True

set.subset?(set.superset?)

# Ruby[53] pry(main)> s1 = Set[3, 4, 5]=> #
[54] pry(main)> s2 = Set[3, 4]=> #
[55] pry(main)> s1.subset? s2=> false[56] pry(main)> s2.subset? s1=> true[57] pry(main)> s1.subset? s1=> true[58] pry(main)> s1.proper_subset? s1=> false[59] pry(main)> s2.proper_subset? s1=> true[60] pry(main)> s1.superset? s2=> true
# Python3>>> s1 = set([3, 4, 5])>>> s2 = set([3, 4])>>> s1.issubset(s2)False>>> s2.issubset(s1)True>>> s1.issubset(s1)True>>> s1.issuperset(s2)True>>> s2.issuperset(s1)False

 

转载地址:http://tjjqi.baihongyu.com/

你可能感兴趣的文章
Creating a Digital Home Entertainment System with Windows Media Center
查看>>
Java Concurrency in Practice
查看>>
Red Hat Fedora 5 Unleashed
查看>>
AdvancED Flash Interface Design (Advanced Design)
查看>>
Quartz Job Scheduling Framework: Building Open Source Enterprise Applications
查看>>
C++ GUI Programming with Qt 4
查看>>
Effective Use of Microsoft Enterprise Library: Building Blocks for Creating Enterprise Applications
查看>>
Java For Artists: The Art, Philosophy, And Science Of Object-Oriented Programming
查看>>
Moodle E-learning Course Development
查看>>
VoIP For Dummies
查看>>
Administrator's Guide to SQL Server 2005
查看>>
Ajax Design Patterns
查看>>
DNS and BIND (5th Edition)
查看>>
Firewall Fundamentals
查看>>
Learning PHP and MySQL
查看>>
Agile Software Construction
查看>>
Computer Security Basics
查看>>
Sams Teach Yourself MySQL in 10 Minutes
查看>>
Information Systems : The State of the Field
查看>>
IPv6 Essentials
查看>>