pasar.pts-ptn.net Layanan Informasi 17 Jam
Telp/Fax : 021-8762002, 8762003, 8762004, 87912360
HP/SMS : 081 1110 4824 27, 0812 9526 2009, 08523 1234 000, 0815 145 78119
WhatsApp : 0817 0816 486, 0812 9526 2009, 0815 145 78119
email : _Hubungi Kami__ silahkan klik
Chatting dengan Staf :
ggkarir.com
ggiklan.com
Pilih Bahasa :   ID   EN   Permintaan Katalog / Brosur (GRATIS via POS)   Kelas Karyawan   Reguler
D3 MPRS (Manajemen Pelayanan RS)S1 Ilmu KomunikasiS1 AkuntansiSMKPartai PolitikKedutaan KBRIAl Quran onlineHTML 4Perangkat Lunak (Software)

   
Cari  
    Informasi Sains

    Sebelumnya  (Comparison shopping website) (List of academic databases and ...)  Berikutnya    

List comprehension

A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists. It follows the form of the mathematical set-builder notation (set comprehension) as distinct from the use of map and filter functions.

Contents

Overview

Consider the following example in set-builder notation.

S=\{\,2\cdot x\mid x \in \mathbb{N},\ x^2>3\,\}

This can be read, "S is the set of all numbers "2 times x" where x is an item in the set of natural numbers (\mathbb{N}), for which x squared is greater than 3."

In this annotated version of the example:

S=\{\,\underbrace{2\cdot x}_{\color{Violet}\text{output function}}\mid \underbrace{x}_{\color{Violet}\text{variable}} \in \underbrace{\mathbb{N}}_{\color{Violet}\text{input set}},\ \underbrace{x^2>3}_{\color{Violet}\text{predicate}}\,\}
  • x is the variable representing members of an input set.
  • \mathbb{N} represents the input set, which in this example is the set of natural numbers
  • x^2>3 is a predicate function acting as a filter on members of the input set.
  • 2\cdot x is an output function producing members of the new set from members of the input set that satisfy the predicate function.
  • \{\} brackets contain the expression
  • \mid , the vertical bar and the comma are separators.

A list comprehension has the same syntactic components to represent generation of a list in order from an input list or iterator:

  • A variable representing members of an input list.
  • An input list (or iterator).
  • An optional predicate expression.
  • And an output expression producing members of the output list from members of the input iterable that satisfy the predicate.

The order of generation of members of the output list is based on the order of items in the input.

In Haskell's list comprehension syntax, this set-builder construct would be written similarly, as:

s = [ 2*x | x <- [0..], x^2 > 3 ]

Here, the list [0..] represents \mathbb{N}, x^2>3 represents the predicate, and 2*x represents the output expression.

List comprehensions give results in a defined order (unlike the members of sets); and list comprehensions may generate the members of a list in order, rather than produce the entirety of the list thus allowing, for example, the previous Haskell definition of the members of an infinite list.

History

The SETL programming language (later 1960s) had a set formation construct, and the computer algebra system AXIOM (1973) has a similar construct that processes streams, but the first use of the term "comprehension" for such constructs was in Rod Burstall and John Darlington's description of their functional programming language NPL from 1977.

Smalltalk block context messages which constitute list comprehensions have been in that language since at least Smalltalk-80.

Burstall and Darlington's work with NPL influenced many functional programming languages during the 1980s but not all included list comprehensions. An exception was the influential pure lazy functional programming language Miranda which was released in 1985. The subsequently developed standard pure lazy functional language, Haskell, includes many of Miranda's features including list comprehensions. The Python programming language was heavily influenced by the pure lazy school of functional programming and adopted list comprehensions.

Comprehensions were proposed as a query notation for databases[1] and were implemented in the Kleisli database query language.[2]

Examples in different programming languages

The following provides a few examples of specific syntax used in programming languages.

Although the original example denotes an infinite list, few languages can express that, so in some of those cases we show how to take a subset of \{0, 1, ..., 100\} rather than a subset of \mathbb{N}.

B-Prolog

L @= [Y : X in 1..100, [Y], (X*X>3, Y is 2*X)]

A list of the form [T : E1 in D1, ..., En in Dn, LocalVars, Goal] is interpreted as a list comprehension in calls to @=/2 and constraints. A list comprehension is translated into a foreach construct with an accumulator.

Ceylon

{ for (x in 0..100) if ( x**2 > 3) x * 2 }

Clojure

Clojure generates infinite lazy sequences (similar to Haskell's lazy lists or Python's generators). Use take to get the first N results from the infinite sequence.

 (take 20 (for [x (range) :when (> (* x x) 3)] (* 2 x))) ;; ⇒ (4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42)

CoffeeScript

CoffeeScript brings pretty list comprehensions to JavaScript.

 (x * 2 for x in [0..20] when x*x > 3)

Common Lisp

List comprehensions can be expressed with the loop macro's collect keyword. Conditionals are expressed with if, as follows:

(loop for x from 0 to 100 if (> (* x x) 3) collect (* 2 x))

An infinite lazy sequence can be created in a variety of ways, such as the CLOS object system or a yield macro.

Erlang

The same example in Erlang:

 S = [2*X || X <- lists:seq(0,100), X*X > 3].

F#

The F# generator comprehension has the list comprehension syntax elements. Generator comprehensions can be used to generate Lists, Sequences (lazy lists) and Arrays (not discussed here).

Generators are of the form [for x in collection do ... yield expr] for lists and seq {for x in collection do ... yield expr} for sequences. For example:

> seq { for x in 0..100 do          if x*x > 3 then yield 2*x } ;;val it : seq<int> = seq [4; 6; 8; 10; ...]

Falcon

The "comp" generic method family provides wide support for comprehension. For example, the "mfcomp" method can be applied to an array:

 s = [].mfcomp( { i => if i*i > 3: return 2*i; return oob(1)}, [1:101] )

Falcon can also use functional generators to provide input lists. For example, the following code uses a continuation to create a set of pairs.

 gen = Continuation( function( max, c )        i = 0        while i < max: c(++i)        return oob(0)     end ) data = [10,11,12] s = Set().mfcomp( {x, y => x+y}, .[gen 3], data )

Method "comp" was introduced in version 0.9.6, and methods "mcomp" and "mfcomp" in version 0.9.6.2.

Groovy

Groovy supports list comprehension style expressions for any kind of Java Collection including lists, sets, and maps.

s = (1..100).grep { it ** 2 > 3 }.collect { it * 2 }

The "it" variable is shorthand for the implicit parameter to a closure. The above is equivalent to:

s = (1..100).grep { x -> x ** 2 > 3 }.collect { x -> x * 2 }

Haskell

Please refer to the main example in the overview.

s = [ 2*x | x <- [0..], x^2 > 3 ]

Here, the list [0..] generates natural numbers one by one which get bound to variable x, x^2>3 represents the predicate that either accepts or rejects a given variable's value, and 2*x represents the result expression. There might be several generators and test predicates in one list compehension expression in Haskell, in effect defining nested loops, e.g.:

s = [ 2*x*y | x <- [0..], x^2 > 3, y <- [1,3..x], y^2 < 100-x^2]--   for each x from 0 by 1: --     if x^2 > 3:--       for each y from 1 by 2 upto x:--         if y^2 < 100 - x^2:--           produce 2*x*y

The above expression becomes unproductive ("stuck") at some point, when new xs keep being generated only to be rejected later on. This is so because any test can only reject a value it is given, not any future ones (there is no cut mechanism here, in Prolog terms - a generator in general might produce its values unordered, like e.g. the above expression itself). This can be dealt with using bounded list generators always or by enclosing a generator inside a take or takeWhile call, limiting the amount of generated values.

JavaFX

Using the for statement and a boolean expression:

  var s = for (i in [1..100][n | n*n > 3]) { 2*i }

JavaScript 1.7

JavaScript 1.7 has array comprehensions. The JavaScript engine of the popular Firefox browser from Mozilla Foundation---SpiderMonkey---supports them,[3] for example,

js> [2*x for each (x in [0,1,2,3,4,5,6,7]) if (x*x<5)][0, 2, 4]

The sequence of integers can be obtained by prototyping the Number object,

Number.prototype.__iterator__=function(){for (var i=0; i<this; i++) yield i}var s = [2*x for (x in 100) if (x*x<5)]

Or introducing a range function,

var range = function(start,end){for (var i=start; i<=end; i++) yield i}var s = [2*x for (x in range(0,100)) if (x*x<5)]

Mathematica

The Cases command with a RuleDelayed in the second argument provides a list comprehension mechanism:

 s = Cases[Range[0,100], i_ /; i^2 > 3 :> 2i]

OCaml

OCaml Batteries Included has uniform comprehension syntax for lists, arrays, enumerations (like streams), lazy lists (like lists but evaluated on-demand), sets, hashtables, etc.

Comprehension are of the form [? expression | x <- enumeration ; condition; condition ; ... ?].

For instance,

#   [? 2 * x | x <- 0 -- max_int ; x * x > 3 ?];;- : int Enum.t = <abstr>

or, to compute a list,

#   [? List: 2 * x | x <- 0 -- 5 ; x * x > 3 ?];;- : int list = [4; 6; 8; 10]

or, to compute a set,

#   [? PSet: 2 * x | x <- 0 -- 5 ; x * x > 3 ?];;- : int PSet.t = <abstr>

etc.

Octave

GNU Octave can do list (vector) comprehensions in the form (vector expression)(vector condition).

For example,

octave:1> x=0:100; s=(2*x)(x.**2<5)s = 0 2 4

Perl 6

Perl 6 provides more than one way to implement list comprehensions.

my @s = ($_ * 2 if $_ ** 2 > 3 for ^100);

Or, using gather:

my @s = gather { for ^100 { take 2 * $_ if $_ ** 2 > 3 } };

Pure

The same example in Pure:

s = [2*n | n=1..100; n*n > 3];

Python

The Python programming language has a corresponding syntax for expressing list comprehensions. The near-equivalent in Python to the example above is as follows:

S = [2 * x for x in range(101) if x ** 2 > 3]

List comprehensions were introduced in Python version 2.0.[4]

A generator expression may be used in Python versions 2.4 and above[5] to achieve functional equivalence with S using a generator to iterate a (finite or infinite) sequence:

from itertools import countS = (2 * x for x in count() if x ** 2 > 3)

Racket

Racket provides functional versions of for-loops, which are essentially list comprehension syntax:

(for/list ([x (in-range 100)] #:when (> (* x x) 3))  (* 2 x))

The imperative for can also be used, combined with Racket's generator library to produce an infinite generator:

(require racket/generator)(generator ()  (for ([x (in-naturals)] #:when (> (* x x) 3))    (yield (* 2 x))))

Ruby

In the Ruby language you can use multiple ways to simulate this function, for example:

(1..100).select{|x| x ** 2 > 3 }.collect{|x| 2 * x}

Or you can define your own method:

module Enumerable  def comprehend(&block)    return self if block.nil?    collect(&block).compact  endend (1..100).comprehend {|x| 2 * x if x ** 2 > 3}

Scala

Using a for-expression:

val s = for (x <- Stream.from(0) if x*x > 3) yield 2*x

Scheme

Although there is no standard list comprehension syntax in R5RS, many implementations provide an extension for this. For example, in Chicken Scheme:

(require-extension list-of)(list-of (* 2 x) (x range 0 101) (> (* x x) 3))

There is also a portable library SRFI/42 "Eager Comprehensions", which in particular includes list comprehensions:

(require srfi/42) ; example import into Racket Scheme(list-ec (: x 101) (if (> (* x x) 3)) (* 2 x))

SETL

s := {2*x : x in {0..100} | x**2 > 3 };

Smalltalk

((1 to: 100) select: [:x|x*x>3]) collect: [:x|2*x]

SuperCollider

In SuperCollider list comprehensions are implemented as Routines, whose results can be collected with the message 'all'. A shortcut syntax is provided for defining list comprehensions, which internally translates to a routine.

all {: x * 2, x <- (1..100), x ** 2 > 3 }

Visual Prolog

S = [ 2*X || X = std::fromTo(1, 100), X^2 > 3 ]

PowerShell

0..100 | Where {$_ * $_ -gt 3} | ForEach {$_ * 2}

Similar constructs

Monad comprehension

In Haskell, a monad comprehension is a generalization of the list comprehension to other monads in functional programming.

Set comprehension

Version 3.x and 2.7 of the Python language introduces syntax for set comprehensions. Similar in form to list comprehensions, set comprehensions generate Python sets instead of lists.

>>> s = {v for v in 'ABCDABCD' if v not in 'CB'}>>> print(s){'A', 'D'}>>> type(s)<class 'set'>>>>

Racket set comprehensions generate Racket sets instead of lists.

(for/set ([v "ABCDABCD"] #:unless (member v (string->list "CB")))         v))

Dictionary comprehension

Version 3.x and 2.7 of the Python language introduced a new syntax for dictionary comprehensions, similar in form to list comprehensions but which generate Python dicts instead of lists.

>>> s = {key: val for key, val in enumerate('ABCD') if val not in 'CB'}>>> s{0: 'A', 3: 'D'}>>>

Racket hash table comprehensions generate Racket hash tables (one implementation of the Racket dictionary type).

(for/hash ([(val key) (in-indexed "ABCD")]           #:unless (member val (string->list "CB")))  (values key val))

Parallel list comprehension

The Glasgow Haskell Compiler has an extension called parallel list comprehension (also known as zip-comprehension) that permits multiple independent branches of qualifiers within the list comprehension syntax. Whereas qualifiers separated by commas are dependent ("nested"), qualifier branches separated by pipes are evaluated in parallel (this does not refer to any form of multithreadedness: it merely means that the branches are zipped).

-- regular list comprehensiona = [(x,y) | x <- [1..5], y <-[[3..5]]-- [(1,3),(1,4),(1,5),(2,3),(2,4) ... -- zipped list comprehensionb = [(x,y) | (x,y) <- zip [1..5] [[3..5]]-- [(1,3),(2,4),(3,5)] -- parallel list comprehensionc = [(x,y) | x <- [1..5] | y <- [[3..5]]-- [(1,3),(2,4),(3,5)]

Racket's comprehensions standard library contains parallel and nested versions of its comprehensions, distinguished by "for" vs "for*" in the name. For example, the vector comprehensions "for/vector" and "for*/vector" create vectors by parallel versus nested iteration over sequences. The following is Racket code for the Haskell list comprehension examples.

> (for*/list ([x (in-range 1 6)] [y (in-range 3 6)]) (list x y))'((1 3) (1 4) (1 5) (2 3) (2 4) (2 5) (3 3) (3 4) (3 5) (4 3) (4 4) (4 5) (5 3) (5 4) (5 5))> (for/list ([x (in-range 1 6)] [y (in-range 3 6)]) (list x y))'((1 3) (2 4) (3 5))

In Python we could do as follows:

# regular list comprehension>>> a = [(x, y) for x in range(1, 6) for y in range(3, 6)][(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), ... # parallel/zipped list comprehension>>> b = [x for x in zip(range(1, 6), range(3, 6))][(1, 3), (2, 4), (3, 5)]

XQuery and XPath

Like the original NPL use, these are fundamentally database access languages.

This makes the comprehension concept more important, because it is computationally infeasible to retrieve the entire list and operate on it (the initial 'entire list' may be an entire XML database).

In XPath, the expression:

/library/book//paragraph[@style='first-in-chapter']

is conceptually evaluated as a series of "steps" where each step produces a list and the next step applies a filter function to each element in the previous step's output.[6]

In XQuery, full XPath is available, but FLWOR statements are also used, which is a more powerful comprehension construct.[7]

for $b in //bookwhere $b[@pages < 400]order by $b//titlereturn  <shortBook>    <title>{$b//title}</title>    <firstPara>{($book//paragraph)[1]}</firstPara>  </shortBook>

Here the XPath //book is evaluated to create a sequence (aka list); the where clause is a functional "filter", the order by sorts the result, and the <shortBook>...</shortBook> XML snippet is actually an anonymous function that builds/transforms XML for each element in the sequence using the 'map' approach found in other functional languages.

So, in another functional language the above FLWOR statement may be implemented like this:

map(  newXML(shortBook, newXML(title, $1.title), newXML(firstPara, $1...))  filter(    lt($1.pages, 400),    xpath(//book)  ))

LINQ in C#

C# 3.0 has a group of related features called LINQ, which defines a set of query operators for manipulating list-like structures (object enumerations, SQL datasets, …). On top of these operators it offers a comprehension syntax, reminiscent of SQL:

var s = from x in Enumerable.Range(0, 100) where x*x > 3 select x*2;

C++

C++ does not have any language features directly supporting list comprehensions. List comprehensions can be constructed using the erase-remove idiom to select elements in a container and the STL algorithm for_each to transform them.

#include <algorithm>#include <list> using namespace std; template<class C, class P, class T>C&& comprehend(C&& source, const P& predicate, const T& transformation){  // initialize destination  C d = forward(source);   // filter elements  d.erase(remove_if(begin(d), end(d), predicate), end(d));   // apply transformation  for_each(begin(d), end(d), transformation);   return d;} int main(){  list<int> range(10);        // range is a list of 10 elements, all zero  iota(begin(range), end(range), 1);      // range now contains 1,2,...,10   list<int> result = comprehend(      range,      [](int x){return x*x <= 3;},      [](int &x){x *= 2;});      // result now contains 4,6,...,20}

There is some effort in providing C++ with list-comprehension constructs/syntax similar to the set builder notation.

  • In Boost.Range [1] library there is a notion of adaptors [2] that can be applied by to any range and do filtering, transformation etc. With this library, the original Haskell example would look like (using Boost.Lambda [3] for anonymous filtering and transforming functions):
counting_range(1,10) | filtered( _1*_1 > 3 ) | transformed(ret<int>( _1*2 ))

Full example is here: http://codepad.org/y4bpgLJu

  • This[8] implementation uses a macro and overloads the << operator. It evaluates any expression valid inside an 'if', and any variable name may be chosen. It's not threadsafe, however. Usage example:
list<int> N;list<double> S; for (int i = 0; i < 10; i++)     N.push_back(i); S << list_comprehension(3.1415 * x, x, N, x*x > 3)
  • This[9] implementation provides head/tail slicing using classes and operator overloading, and the | operator for filtering lists (using functions). Usage example:
bool even(int x) { return x % 2 == 0; }bool x2(int &x) { x *= 2; return true; } list<int> l, t;int x, y; for (int i = 0; i < 10; i++)     l.push_back(i); (x, t) = l | x2;(t, y) = t; t = l < 9;t = t < 7 | even | x2;

See also

Notes and references

Haskell

OCaml

Python

Common Lisp

Clojure

Axiom

External links

    Sebelumnya  (Comparison shopping website) (List of academic databases and ...)  Berikutnya    





Tags: List comprehension, Informasi Sains, 464, List comprehension A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists, It follows the form of the mathematical set builder notation ( set comprehension ) as distinct from the use of map and filter functions, Contents Overview 2 History 3 Examples in different programming languages 3.1 B Prolog 3.2 Ceylon 3.3 Clojure, List comprehension, Bahasa Indonesia, Contoh Instruksi, Tutorial, Referensi, Buku, Petunjuk pasar, pts-ptn.net
 Download Brosur
 Lowongan Karir
 Macam2 Perdebatan
 Program S2 (Pascasarjana)
Informasi PTS
Khusus Perguruan Tinggi Swasta
Terkemuka & Terakreditasi
STMIKMJ Jakarta
STIE IGI
STTM STIE WP
STEI Jogja
STIE Hidayatullah
STEBI Bina Essa
UMJ: FTan FISIP
Univ. Muhammadiyah Smrg
Univ. Muhammadiyah Sby
UNSUB
STMIK MJ UNKRIS
Univ. Thamrin: FE FASILKOM
ISTA ITBU
STIE Trianandra STIE IGI
STT Mandala Bandung
STMIK STIKOM Bali STTB
POLNAS Denpasar
STT Bina Tunggal Bks.
STIKI Malang
UNDARIS Semarang
INDOCAKTI
UPRI
STIE Hidayatullah Depok
UNISA Dharma Andigha
Universitas Nusantara
UHAMZAH
UTS Makassar
STT Duta Bangsa
STIE GICI IMWI Sukabumi
UNAKI KAHURIPAN
STEI Jogja STIE Pemuda
Universitas Mpu Tantular
USCND Langsa
USM INDONESIA STTM
UNUGHA UM Palangkaraya
STIE WD IKIP WD
STIE Ganesha Yuppentek
STT Muttaqien
STIT BATAM IAI AS
UCM STIE GEMA
Universitas Megou
STIE PIONEER
STIMAIMMI STIEABI
UPGRIS UICM Bandung
AL-AZHAR UNUSA
Tanri Abeng University
STIE AMKOP STIE WP
Univ. Boyolali UDB
UNIBA ITB AD
UNU KALBAR
Ubudiyah
ISIF
STEBI Global Mulia
STT Sapta Taruna
Universitas Bali Dwipa
UNU Kaltim UHS
Univetsitas IVET
CENDEKIA STAI DB
STIE Mitra STiPSi
UNIPI Bandung
STIE Al-Rifa'ie
UNTARA Pelita Bangsa
Patria Artha
Univ. Widya Kartika
UTN Bogor IGN Bogor
Parna Raya
STAI Terpadu Yogyakarta
STIT Al-Hikmah Lampung
Univ. Deli Sumatera
STIA Bayuangga
UI Mandiri
STAI Muhammadiyah Probolinggo
STEBI Bina Essa
STAI Muhammadiyah Tulungagung
Politeknik Harapan Bangsa Surakarta
STIKes Sapta Bakti
ITeKes Tri Tunas Nasional
STEBI Badri Mashduqi
STIA Maulana Yusuf
STAI Miftahul Ulum
STIH Gunung Jati
STIE PPI Balaraja
Poltekkes Kerta Cendekia
ITB Pelita Raya
Poltek Ganesha
Universitas Moch. Sroedji
STIT Al-Hidayah Tasikmalaya
STIT Nur Ahadiyah
Politeknik Aisyiyah
Politeknik Santo Paulus Surakarta
IAI Al-Ghurabaa Jakarta
STAI AL Akbar Surabaya
Universitas Mahakarya Asia Yogyakarta
Politeknik Bhakti Kartini
Univ. Muhammadiyah Smrg
STMIK MJ UNKRIS
Thamrin: FE FASILKOM
STT Bina Tunggal Bks.
STIKI Malang
UNDARIS Semarang
INDOCAKTI
UPRI
STIE Hidayatullah Depok
UNISA Dharma Andigha
Universitas Nusantara
UHAMZAH
UTS Makassar
STT Duta Bangsa
STIE GICI IMWI Sukabumi
UNAKI KAHURIPAN
STEI Jogja STIE Pemuda
Universitas Mpu Tantular
USCND Langsa
USM INDONESIA
UM Palangkaraya
UNUGHA STIE WD IKIP WD
STIE Ganesha Yuppentek
STT Muttaqien
STIT BATAM IAI AS
UCM STIE GEMA
Universitas Megou
STIE PIONEER
STIMAIMMI STIEABI
UPGRIS UICM Bandung
AL-AZHAR UNUSA
Tanri Abeng University
STIE AMKOP STIE WP
Univ. Boyolali UDB
UNIBA ITB AD
UNU KALBAR
Ubudiyah ISIF
STEBI Global Mulia
STT Sapta Taruna
Universitas Bali Dwipa
UNU Kaltim UHS
Univetsitas IVET
CENDEKIA STAI DB
STIE Mitra STiPSi
UNIPI Bandung
STIE Al-Rifa'ie
UNTARA Pelita Bangsa
Patria Artha
Univ. Widya Kartika
UTN Bogor IGN Bogor
Parna Raya
STAI Terpadu Yogyakarta
STIT Al-Hikmah Lampung
Univ. Deli Sumatera
STIA Bayuangga
UI Mandiri
STAI Muhammadiyah Probolinggo
STEBI Bina Essa
STAI Muhammadiyah Tulungagung
Politeknik Harapan Bangsa Surakarta
STIKes Sapta Bakti
ITeKes Tri Tunas Nasional
STEBI Badri Mashduqi
STIA Maulana Yusuf
STAI Miftahul Ulum
STIH Gunung Jati
STIE PPI Balaraja
Poltekkes Kerta Cendekia
ITB Pelita Raya
Poltek Ganesha
Universitas Moch. Sroedji
STIT Al-Hidayah Tasikmalaya
STIT Nur Ahadiyah
Politeknik Aisyiyah
Politeknik Santo Paulus Surakarta
IAI Al-Ghurabaa Jakarta
STAI AL Akbar Surabaya
Universitas Mahakarya Asia Yogyakarta
Politeknik Bhakti Kartini
MM UNKRIS MIKom Fisip UMJ MIA Fisip UMJ
MM STIE Mitra MM UNTARA MM Pelita Bangsa
MM STIE Ganesha
MM STIMAIMMI MM STIEABI
MM STIE IGI MM STIE GICI MKS ITB Ahmad Dahlan
MM IGN MKom IGN
KPT Konsultan Pendidikan Tinggi
Chatting dengan staf
Kuliah Karyawan

(silakan klik di bawah ini)
Penerimaan / Pendaftaran
__Mahasiswa Baru

Lokasi Kampus & Peta
Program Studi (D3, S1, S2)
___(+ Kurikulum & Prospektus)

Pascasarjana (S2)
Biaya Pendidikan
Sistem Pendidikan
Jadwal Kuliah & Dosen
Keunggulan-Keunggulan
Angkutan Umum


GALERI FOTO

Tabel Website Gabungan PTS
Jaringan Portal Gilland Group
Web Iklan Kuliah Lanjutan
List Web Barterlink
Konsultan Pendidikan Tinggi

Jaringan Situs Forum
Jaringan Situs Iklan
Jaringan Situs Pengumuman
Jaringan Situs Lowongan

Tabel Portal Kelas Pengusaha
Tabel Portal Reguler Pagi
Tabel Portal Kelas Sore/Malam
Tabel Portal Magister
Jaringan Portal Ensiklopedia
Daftar Situs Ensiklopedi Dunia
 Soal-Jawab Psikotes
 Ensiklopedia Bebas
 Berbagai Informasi
 Pendaftaran Online
 Pengajuan Beasiswa Kuliah
 Perkuliahan Online di 168 PTS Terbaik
 Program Kuliah Tanpa Biaya
 Program Kelas Khusus
 Program Perkuliahan Reguler
 Kuliah Paralel
 Contoh Soal Try Out
 Jadwal Shalat
 Alquran Online
 Buku Tutorial
Link Khusus ke
PTS Terakreditasi & Terkemuka
Penyelenggara Program S1, D3, S2

(silakan klik di bawah ini)
STMIKMJ - STMIKMJ Jakarta
IGI - STIE IGI Jakarta
STTM Cileungsi - STIE Cileungsi
STIE WP - STIE Widya Persada
UPRI - UPRI Makassar
STEI - STEI Yogyakarta
STIE - Hidayatullah Depok
STEBI - Bina Essa
P2KKMPoliteknik Aisyiyah

P2KKMUMPTB Lampung
P2KKMSTIT Al-Hikmah Lampung

P2KKMUniv.Amir Hamzah
P2KKMUSM Indonesia
P2KKMUniv. Al-Azhar Medan
P2KKMUniversitas Deli Sumatera

P2KKMUniv. Muh. Palangkaraya

P2KKMSTIT Nur Ahadiyah

P2KKMUniv. Nahd. Ulama Kalbar

P2KKMUniv. Nahd. Ulama Kaltim

Langsa -- Aceh :
P2KKMUSCND Langsa

P2KKMUniv. Ubudiyah Indonesia

P2KKMSTIT Hidayatullah
P2KKMIAI Abdullah Said

P2KKMUniv. Pejuang Rep. Ind.
P2KKMUniv. Teknologi Sulawesi
P2KKMUniv. Cokroaminoto Makassar
P2KKMITeKes Tri Tunas Nasional

P2KKMUniv. Patria Artha

P2KKMUniv. Nusantara, Manado
P2KKMSTIE Pioneer Manado
P2KKMUniversitas Parna Raya Manado

P2KKMUniversitas Boyolali

P2KKMUniversitas Duta Bangsa
P2KKMPoliteknik Harapan Bangsa Surakarta
P2KKMPoliteknik Santo Paulus Surakarta

P2KKMUNIBABWI

P2KKMUniv. Muhammadiyah Smrg
P2KKMUNDARIS Semarang
P2KKMUNAKI Semarang
P2KKMUPGRIS Semarang
P2KKMUniv. IVET Semarang
P2KKMSTIE Cendekia

P2KKMUNUGHA Cilacap

P2KKMUniv. Muhammadiyah Sby
P2KKMSTIE Pemuda Sby
P2KKMIKIP Widya Darma Sby
P2KKMSTIE Widya Darma Sby
P2KKMSTIE ABI Surabaya
P2KKMUNUSA Surabaya
P2KKMUniv. Widya Kartika
P2KKMSTAI Al Akbar Surabaya

P2KKMUniv. Kahuripan Kediri

P2KKMSTAI Muhammadiyah Tulungagung

P2KKMSTIKI Malang
P2KKMSTIE INDOCAKTI
P2KKMSTIE Al Rifa'ie

P2KKMSTIA Bayuangga
P2KKMSTAI Muhammadiyah Probolinggo

P2KKMUniversitas Moch. Sroedji

P2KKMSTEI JOGJA - STEI Yogyakarta
P2KKMSTIE Mitra Indonesia
P2KKMSTiPsi
P2KKMSTAI Terpadu Yogyakarta
P2KKMUniversitas Mahakarya Asia

P2KKMSTIE Hidayatullah
P2KKMSTIE - GICI A
P2KKMSTIE - GICI A


P2KKMSTMIK-MJ - STMIK Muh. Jkt.
P2KKMUNKRIS - Krisnadwipayana
P2KKMSTT Bina Tunggal - Bekasi
P2KKMSTT Duta Bangsa - Bekasi
P2KKMSTIE - GICI C
P2KKMSTEBI Global Mulia
P2KKMUniversitas Pelita Bangsa
P2KKMUniversitas Indonesia Mandiri
P2KKMPoliteknik Bhakti Kartini

P2KKMSTMIK-STIKOM Bali
P2KKMPOLNAS Denpasar
P2KKMUniversitas Bali Dwipa
P2KKMPoltek Ganesha Guru Singaraja

P2KKMSTIE Ganesha
P2KKMSTT Yuppentek
P2KKMITB Ahmad Dahlan
P2KKMUniv. Tangerang Raya
P2KKMSTIA Maulana Yusuf
P2KKMSTIH Gunung Jati
P2KKMSTIE PPI Balaraja

P2KKMUNSUB - Universitas Subang

P2KKMSTIT Al-Hidayah Tasikmalaya

P2KKMSTIE Walisongo
P2KKMSTT Walisongo

P2KKMUniv. Islam Al-Ihya

P2KKMSTT Mandala, Bandung
P2KKMSTT Bandung
P2KKMSTIE Gema Widya Bangsa
P2KKMUniversitas Insan Cendekia Mandiri
P2KKMUniversitas Halim Sanusi
P2KKMUniversitas Persatuan Islam
P2KKMSTEBI Bina Essa

P2KKMSTT Dr. Khez Muttaqien

P2KKMIMWI Sukabumi

P2KKMSTIH Dharma Andigha
P2KKMUniversitas Teknologi Nusnatara

P2KKMSTT Muhammadiyah Cileungsi

P2KKMISTA - Institut ST Al Kamal
P2KKMSTIE IGI - Inter. Golden Inst.
P2KKM Univ. Mpu Tantular B

P2KKMU M J - Univ. Muh. Jkt

P2KKMFISIP UMJ - Univ. Muh. Jkt.
P2KKMFTan UMJ - Agroteknologi
P2KKMSTIE Trianandra Jakarta
P2KKMSTIE - GICI B
P2KKMSTIE Ganesha
P2KKMSTIMAIMMI Jakarta
P2KKMTanri Abeng University

P2KKMUMHT - Univ. MH. Thamrin
P2KKMFE UMHT - FE MH. Thamrin
P2KKMFASILKOM UMHT
P2KKMUNKRIS - Krisnadwipayana
P2KKMITBU - Inst. Tek. Budi Utomo
P2KKMSTIE Trianandra Jakarta
P2KKMSTMIK Muh. Jkt - Matraman
P2KKMSTMIK Muh. Jkt - Ciracas
P2KKMUniv. Mpu Tantular A
P2KKMSTT Sapta Taruna
P2KKMIAI Al-Ghurabaa Jakarta

P2KKMISIF - Institut Studi Islam Fahmina

P2KKMSTEBI Global Mulia

P2KKMSTIKes Sapta Bakti
P2KKMSTAI Miftahul ulum

P2KKMPoltekkes Kerta Cendekia

P2KKMPelita Raya Institute


KPT Konsultan Pendidikan Tinggi

Beritahukan ke Teman Anda
Nama Anda

Email Anda

Email Teman 1
✯ harus diisi dengan benar

Tautan Tambahan
silakan klik
Perguruan Tinggi Negeri
Tips & Trick Melamar Kerja
Ensiklopedis Online

1. STIE GICI Business School Bogor - STIE GICI Business School Bogor - STIE GICI, Bogor : Jl. Pahlawan No.25A, RT.03/RW.11, Empang, Kec. Bogor Sel., Kota Bogor, Jawa Barat 16132
2. UNUSA Surabaya - Universitas Nahdlatul Ulama Surabaya - KampusUNUSA : Jl. Jemur Sari No. 57, Jemur Wonosari, Wonocolo, Surabaya, Jawa Timur
3. Universitas Nusa Mandiri Kramat - Universitas Nusa Mandiri Kramat - Kampus: Jl. Kramat Raya No.18, RT.5/RW.7, Kwitang, Kec. Senen, Kota Jakarta Pusat 10450
4. Universitas Nusa Mandiri Jatiwaringin - Universitas Nusa Mandiri Jatiwaringin - Kampus: Jl. Jatiwaringin No. 2, Cipinang Melayu, Jakarta Timur
5. Universitas Yuppentek Indonesia - Universitas Yuppentek Indonesia Tangerang - Kampus UYI : Jl. Veteran No: 1 Babakan - Kota Tangerang Banten 15118
6. UWIKA Surabaya - Universitas Widya Kartika Surabaya - Kampus UWIKA : Jl. Sutorejo Prima Utara II No.1, Kalisari, Kec. Mulyorejo, Kota Surabaya, Jawa Timur 60112
7. Universitas Teknologi Sulawesi Makassar - Universitas Teknologi Sulawesi Makassar - Kampus UTS Makassar : Jl. Talasalapang No.51A, Karunrung, Kec. Rappocini, Kota Makassar, Sulawesi Selatan 90222
8. Universitas Teknologi Nusantara - Universitas Teknologi Nusantara - Kampus UTN : Jl. Kedung Halang Pemda pangkalan II No.66, RT.01/RW.02, Kedunghalang, Kec. Bogor Utara, Kota Bogor, Jawa Barat 16158
9. Universitas Teknologi Bandung - Universitas Teknologi Bandung - Kampus UTB Bandung : Jl. Soekarno Hatta 378 Bandung 40235
10. USM Indonesia Medan - Universitas Sari Mutiara Indonesia Medan - Kampus USM INDONESIA : Jalan Kapten Muslim No. 79, Medan
11. UNUSIDA - Universitas Nahdlatul Ulama Sidoarjo - Kampus UNUSIDA :Jl. Monginsidi No.A23, Sidoklumpuk, Sidokumpul, Kec. Sidoarjo, Kabupaten Sidoarjo, Jawa Timur 61218
12. UNUGHA Cilacap - Universitas Nahdlatul Ulama Al Ghazali Cilacap - Kampus UNUGHA : Jl. Kemerdekaan Barat No 17 Kesugihan Kidul Cilacap Jawa Tengah
kelas-karyawan-bandung.com  |  kelas-karyawan.net  |  kelas-ekstensi.com  |  kuliah-ekstensi.com  |  ign.web.id  |  kelas-karyawan-surabaya.com  |  kuliahkaryawanbandung.info  |  kelaskaryawanbandung.info  |  infokelaskaryawan.com  |  kuliah-karyawan-yogyakarta.com  |  s2-satyagama.web.id