diff --git a/Doc/lib/libselect.tex b/Doc/lib/libselect.tex
index 803a05e..f3186c4 100644
--- a/Doc/lib/libselect.tex
+++ b/Doc/lib/libselect.tex
@@ -32,12 +32,12 @@
 
 \begin{funcdesc}{select}{iwtd, owtd, ewtd\optional{, timeout}}
 This is a straightforward interface to the \UNIX{} \cfunction{select()}
-system call.  The first three arguments are lists of `waitable
+system call.  The first three arguments are sequences of `waitable
 objects': either integers representing file descriptors or
 objects with a parameterless method named \method{fileno()} returning
-such an integer.  The three lists of waitable objects are for input,
-output and `exceptional conditions', respectively.  Empty lists are
-allowed, but acceptance of three empty lists is platform-dependent.
+such an integer.  The three sequences of waitable objects are for input,
+output and `exceptional conditions', respectively.  Empty sequences are
+allowed, but acceptance of three empty sequences is platform-dependent.
 (It is known to work on \UNIX{} but not on Windows.)  The optional
 \var{timeout} argument specifies a time-out as a floating point number
 in seconds.  When the \var{timeout} argument is omitted the function
@@ -49,7 +49,7 @@
 without a file descriptor becoming ready, three empty lists are
 returned.
 
-Among the acceptable object types in the lists are Python file
+Among the acceptable object types in the sequences are Python file
 objects (e.g. \code{sys.stdin}, or objects returned by
 \function{open()} or \function{os.popen()}), socket objects
 returned by \function{socket.socket()}.%
diff --git a/Misc/NEWS b/Misc/NEWS
index 1208d41..5cf8d72 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,8 @@
 Extension modules
 -----------------
 
+- select.select() now accepts sequences for its first three arguments.
+
 - cStringIO now supports the f.closed attribute.
 
 - The signal module now exposes SIGRTMIN and SIGRTMAX (if available).
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 98b75f0..2b2d6a9 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -75,22 +75,29 @@
    returns a number >= 0
 */
 static int
-list2set(PyObject *list, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
+seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
 {
 	int i;
 	int max = -1;
 	int index = 0;
-	int len = PyList_Size(list);
+        int len = -1;
+        PyObject* fast_seq = NULL;
 	PyObject* o = NULL;
 
 	fd2obj[0].obj = (PyObject*)0;	     /* set list to zero size */
 	FD_ZERO(set);
 
+        fast_seq=PySequence_Fast(seq, "arguments 1-3 must be sequences");
+        if (!fast_seq)
+            return -1;
+
+        len = PySequence_Fast_GET_SIZE(fast_seq);
+
 	for (i = 0; i < len; i++)  {
 		SOCKET v;
 
 		/* any intervening fileno() calls could decr this refcnt */
-		if (!(o = PyList_GetItem(list, i)))
+		if (!(o = PySequence_Fast_GET_ITEM(fast_seq, i)))
                     return -1;
 
 		Py_INCREF(o);
@@ -121,10 +128,12 @@
 		fd2obj[index].sentinel = 0;
 		fd2obj[++index].sentinel = -1;
 	}
+        Py_DECREF(fast_seq);
 	return max+1;
 
   finally:
 	Py_XDECREF(o);
+        Py_DECREF(fast_seq);
 	return -1;
 }
 
@@ -229,15 +238,6 @@
 		tvp = &tv;
 	}
 
-	/* sanity check first three arguments */
-	if (!PyList_Check(ifdlist) ||
-	    !PyList_Check(ofdlist) ||
-	    !PyList_Check(efdlist))
-	{
-		PyErr_SetString(PyExc_TypeError,
-				"arguments 1-3 must be lists");
-		return NULL;
-	}
 
 #ifdef SELECT_USES_HEAP
 	/* Allocate memory for the lists */
@@ -251,17 +251,17 @@
 		return PyErr_NoMemory();
 	}
 #endif /* SELECT_USES_HEAP */
-	/* Convert lists to fd_sets, and get maximum fd number
-	 * propagates the Python exception set in list2set()
+	/* Convert sequences to fd_sets, and get maximum fd number
+	 * propagates the Python exception set in seq2set()
 	 */
 	rfd2obj[0].sentinel = -1;
 	wfd2obj[0].sentinel = -1;
 	efd2obj[0].sentinel = -1;
-	if ((imax=list2set(ifdlist, &ifdset, rfd2obj)) < 0) 
+	if ((imax=seq2set(ifdlist, &ifdset, rfd2obj)) < 0) 
 		goto finally;
-	if ((omax=list2set(ofdlist, &ofdset, wfd2obj)) < 0) 
+	if ((omax=seq2set(ofdlist, &ofdset, wfd2obj)) < 0) 
 		goto finally;
-	if ((emax=list2set(efdlist, &efdset, efd2obj)) < 0) 
+	if ((emax=seq2set(efdlist, &efdset, efd2obj)) < 0) 
 		goto finally;
 	max = imax;
 	if (omax > max) max = omax;
@@ -618,7 +618,7 @@
 "select(rlist, wlist, xlist[, timeout]) -> (rlist, wlist, xlist)\n\
 \n\
 Wait until one or more file descriptors are ready for some kind of I/O.\n\
-The first three arguments are lists of file descriptors to be waited for:\n\
+The first three arguments are sequences of file descriptors to be waited for:\n\
 rlist -- wait until ready for reading\n\
 wlist -- wait until ready for writing\n\
 xlist -- wait for an ``exceptional condition''\n\
