Path: csiph.com!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.008 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; '(at': 0.03; 'argument': 0.04; 'def': 0.10; '(f,': 0.16; 'function?': 0.16; 'index.': 0.16; 'lambda': 0.16; 'pairs': 0.16; 'received:74.55.86': 0.16; 'received:74.55.86.74': 0.16; 'received:smtp.webfaction.com': 0.16; 'received:webfaction.com': 0.16; 'subject:variable': 0.16; 'wrote:': 0.17; 'creates': 0.18; '>>>': 0.18; 'define': 0.20; 'putting': 0.20; 'anonymous': 0.22; 'wednesday,': 0.22; 'least': 0.25; 'header:In-Reply-To:1': 0.25; 'header:User-Agent:1': 0.26; 'values': 0.26; 'am,': 0.27; 'structures': 0.27; 'value)': 0.29; 'writes:': 0.29; 'function': 0.30; 'subject:lists': 0.32; 'could': 0.32; 'print': 0.32; 'defining': 0.33; 'function.': 0.33; 'right?': 0.33; 'true.': 0.33; 'values.': 0.33; 'to:addr:python- list': 0.33; 'list': 0.35; 'false': 0.35; 'follows:': 0.35; 'there': 0.35; '12,': 0.36; "didn't": 0.36; 'possible': 0.37; 'why': 0.37; 'data': 0.37; 'subject:: ': 0.38; 'to:addr:python.org': 0.39; 'apply': 0.39; 'received:192': 0.39; 'where': 0.40; 'received:192.168': 0.40; 'subject:-': 0.40; 'containing': 0.61; 'more': 0.63; 'header:Reply-To:1': 0.68; 'reply-to:no real name:2**0': 0.72; 'actually,': 0.84; 'returns.': 0.84; 'understand,': 0.84 Date: Wed, 12 Sep 2012 06:51:46 -0700 From: Ken Seehart User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Boolean function on variable-length lists References: In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms060607090500060108030907" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: ken@seehart.com List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 139 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1347457996 news.xs4all.nl 6899 [2001:888:2000:d::a6]:33955 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:28964 This is a cryptographically signed message in MIME format. --------------ms060607090500060108030907 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Putting a few of peoples ideas together... gt =3D lambda x: lambda y: x>y eq =3D lambda x: lambda y: x=3D=3Dy def constrain(c,d): return all({f(x) for f, x in zip(c, d)}) constraints =3D [gt(2), eq(1)] data0 =3D [1,1] data1 =3D [3,1] =20 print constrain(constraints, data0) print constrain(constraints, data1) On 9/12/2012 6:37 AM, Jussi Piitulainen wrote: > Libra writes: >> On Wednesday, September 12, 2012 3:02:44 PM UTC+2, Jussi Piitulainen w= rote: >> =20 >>> So you would associate each constraint with an index. You could >>> maintain a list of constraints and apply it to the values as >>> follows: >> Yes, even though there could be more constraints for each value in >> the list (at least 1 constraint for each value) > Either you write more complex constraint functions, or you use more > complex data structures to hold them. > >>>>>> cs =3D [ lambda x : x >=3D 1, lambda x : x <=3D 3, lambda x : x =3D= =3D 2, >>> ... lambda x : x >=3D 3 ] >>> >>>>>> { f(x) for f, x in zip(cs, [1,2,3,4]) } >> Just to understand, with f(x) you are defining a function f with >> argument x, right? I didn't know it was possible to define functions >> in this way. Is this a case of anonymous function? > The value of each lambda expression is a function. f(x) is a function > call, evaluated for each pair (f, x) from the list of pairs that the > zip returns. > > { ... for ... in ... } creates a set of the values, no duplicates. > [ ... for ... in ... ] creates a list of the values. > >>> {False, True} >> Actually, I don't understand the output. Why it is both False and >> True? > It's a set containing False and True. The False comes from the f(x) > where f =3D lambda x : x =3D=3D 2, and x is 3. There is only one True > because I requested a set of the values. --------------ms060607090500060108030907 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIKQTCC BRowggQCoAMCAQICEG0Z6qcZT2ozIuYiMnqqcd4wDQYJKoZIhvcNAQEFBQAwga4xCzAJBgNV BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoT FVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3Qu Y29tMTYwNAYDVQQDEy1VVE4tVVNFUkZpcnN0LUNsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg RW1haWwwHhcNMTEwNDI4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjCBkzELMAkGA1UEBhMCR0Ix GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxOTA3BgNVBAMTMENPTU9ETyBDbGllbnQgQXV0aGVudGlj YXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAJKEhFtLV5jUXi+LpOFAyKNTWF9mZfEyTvefMn1V0HhMVbdClOD5J3EHxcZppLkyxPFA GpDMJ1Zifxe1cWmu5SAb5MtjXmDKokH2auGj/7jfH0htZUOMKi4rYzh337EXrMLaggLW1DJq 1GdvIBOPXDX65VSAr9hxCh03CgJQU2yVHakQFLSZlVkSMf8JotJM3FLb3uJAAVtIaN3FSrTg 7SQfOq9xXwfjrL8UO7AlcWg99A/WF1hGFYE8aIuLgw9teiFX5jSw2zJ+40rhpVJyZCaRTqWS D//gsWD9Gm9oUZljjRqLpcxCm5t9ImPTqaD8zp6Q30QZ9FxbNboW86eb/8ECAwEAAaOCAUsw ggFHMB8GA1UdIwQYMBaAFImCZ33EnSZwAEu0UEh83j2uBG59MB0GA1UdDgQWBBR6E04AdFvG eGNkJ8Ev4qBbvHnFezAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADARBgNV HSAECjAIMAYGBFUdIAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cDovL2NybC51c2VydHJ1c3Qu Y29tL1VUTi1VU0VSRmlyc3QtQ2xpZW50QXV0aGVudGljYXRpb25hbmRFbWFpbC5jcmwwdAYI KwYBBQUHAQEEaDBmMD0GCCsGAQUFBzAChjFodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVRO QWRkVHJ1c3RDbGllbnRfQ0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1 c3QuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQCF1r54V1VtM39EUv5C1QaoAQOAivsNsv1Kv/av QUn1G1rF0q0bc24+6SZ85kyYwTAo38v7QjyhJT4KddbQPTmGZtGhm7VNm2+vKGwdr+XqdFqo 2rHA8XV6L566k3nK/uKRHlZ0sviN0+BDchvtj/1gOSBH+4uvOmVIPJg9pSW/ve9g4EnlFsjr P0OD8ODuDcHTzTNfm9C9YGqzO/761Mk6PB/tm/+bSTO+Qik5g+4zaS6CnUVNqGnagBsePdIa XXxHmaWbCG0SmYbWXVcHG6cwvktJRLiQfsrReTjrtDP6oDpdJlieYVUYtCHVmdXgQ0BCML7q peeU0rD+83X5f27nMIIFHzCCBAegAwIBAgIQQqqFtzzR+YSRjiorAIgRKDANBgkqhkiG9w0B AQUFADCBkzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxOTA3BgNVBAMTMENP TU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTAeFw0xMTEy MTYwMDAwMDBaFw0xMjEyMTUyMzU5NTlaMCAxHjAcBgkqhkiG9w0BCQEWD2tlbkBzZWVoYXJ0 LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9SSPK9PaOjGSeyxXOq/Oor k9An+cVhjKAazxzme3MKQhM30dXKIKcuJ9yEBHq2erB6pvoLVuhd017umc6/tUSet9s2nMiq ktR5mpflka4m7B2SV9SfuqJVNg6XAXu1ewWwwqp8+aVc4CueFjmdAQlvWWkuaUFsqurtu/Xd fo3xUsmGr+xEykJudAYwUuGPQDiFa40xBdZmZW7aOBq42ismTnvjzCN+DyKKTTPy4EIq4ufx 6EB8wprorTKUpvIuf+m7XRoCEZLo6Q24iwT+z+4YRehEBFIbZefUA+WYGZS9CR9MvN/ocXhp 0u3MAFgnDs1h2Gb5Hpb+ricev2rXsI8CAwEAAaOCAd8wggHbMB8GA1UdIwQYMBaAFHoTTgB0 W8Z4Y2QnwS/ioFu8ecV7MB0GA1UdDgQWBBSzux6BDqkDFVrrY55CvmFBvl5j7jAOBgNVHQ8B Af8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcDBAYLKwYBBAGyMQED BQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQEBMCswKQYI KwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFcGA1UdHwRQME4wTKBK oEiGRmh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET0NsaWVudEF1dGhlbnRpY2F0aW9u YW5kU2VjdXJlRW1haWxDQS5jcmwwgYgGCCsGAQUFBwEBBHwwejBSBggrBgEFBQcwAoZGaHR0 cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1 cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMBoG A1UdEQQTMBGBD2tlbkBzZWVoYXJ0LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAMn8Nc2ARqJvi IBUnKaaaejWBvPWqDNHBUUbCoCFIRZ7OlaLeY1KYj8EcyVbAbCvPqOWiMhy9rJl/33pCElB7 7ukugmao/q6yMgjck6OnHbjiRU8FMZE4/0QsetB/7ma2JmsqqBq2LeoW9vn7vFrKrM8DklqJ eRu+qOlpvMKtUGwtsElqJxPwzsgEmsG+Sfb4HHeYw1dPaVLOebKsXFuPuA3ndIIX3qe4wAh9 0cxc8mPf9GuITxxJpW3btbRa1W0rFnfxjxc7KuLZa0Sfyip+RdOYVp7NAjjHErPuVNYQtT9B yD+OLPI7POKU7trlH6V3t6dwwHDh33MSBhpDn0cemDGCBBkwggQVAgEBMIGoMIGTMQswCQYD VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3Jk MRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE5MDcGA1UEAxMwQ09NT0RPIENsaWVudCBB dXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhBCqoW3PNH5hJGOKisAiBEoMAkG BSsOAwIaBQCgggJFMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8X DTEyMDkxMjEzNTE0NlowIwYJKoZIhvcNAQkEMRYEFPH7D8d8oVXBaMF0jLB2KvBxkAJyMGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gbkGCSsGAQQBgjcQBDGBqzCBqDCBkzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIg TWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 ZWQxOTA3BgNVBAMTMENPTU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBF bWFpbCBDQQIQQqqFtzzR+YSRjiorAIgRKDCBuwYLKoZIhvcNAQkQAgsxgauggagwgZMxCzAJ BgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZv cmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTkwNwYDVQQDEzBDT01PRE8gQ2xpZW50 IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEEKqhbc80fmEkY4qKwCIESgw DQYJKoZIhvcNAQEBBQAEggEArD8swTdXA2vD1F9aBvXe7hGx7lQDYnkRUJKBdKcZZwrqMADB 4U09F8MeI9JAFXUAWeCYgRrbDevA/vkit7sOsI9ZStu9LWdSBs67iTI73QISrEAcr0vu23MH 7XuIM8DSyukCtb7oXqsG2+6yFFUhlQaLJlZnwheleVhZ3Bz3HVLJi6r5EGfhspzN3vVfFvrQ dn4A2FaRJbUvRFvQ/Mbb9Qzr78EiYKV3V18BoIYVG9LIckJgGn3RrtFH+AarxVX22cVVDXMf U9zEhfqwJ4qFED0/QR4UnxyM4Y2zRm6sSDVWzEWtozxzhIit9yPgdY9db2ag4LS2oPkJ8D9T U7rHrwAAAAAAAA== --------------ms060607090500060108030907--