Path: csiph.com!weretis.net!feeder4.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Behnel Newsgroups: de.comp.lang.python Subject: Re: [Python-de] strings zusammensetzen. Date: Sat, 16 Sep 2017 17:30:46 +0200 Lines: 52 Message-ID: References: <9gjg7e-jn3.ln1@gate.homenet> <4085bfc6-8351-87e7-ea83-d6295d28cd5a@behnel.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de lH9BzebUzbmoSeTfoZSxzQmBvsHxnJSWk1Hv/wThZjPg== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1505576226; s=domk; d=behnel.de; h=Content-Transfer-Encoding:Content-Language:Content-Type:In-Reply-To: MIME-Version:Date:From:References:To:Subject; bh=szaJ/Aebs9z5KWx5d/T2JiVzuWlyorvT5eXBRqrlgIM=; b=XvNoMuSBXNBUTAj7mPTJ/cU7p9zffLR56MWNZisJCDeTFhqX6R7TbIaBZfTGD5fpw8 RBAtcl3oYNNJIeMHAXdqTchEuKoeEKf6TcW7ym47B7zk/WSBMncST4ANcVXKawWK7UcP 4pYzV/5OJjc4OBu/8ikGen9wNWJAMzTCFQvJE= X-RZG-AUTH: :E1MMdFW4b++AXZOTwA41DOYM0Dv9LNWvavC/fJZqSuoXq8/b35jbpozFABqPas32JtYvDvUlc6d7YRKV4yBPniCAkPYegMWt5Hd5KIk= X-RZG-CLASS-ID: mo00 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 In-Reply-To: Content-Language: de-DE X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <4085bfc6-8351-87e7-ea83-d6295d28cd5a@behnel.de> X-Mailman-Original-References: <9gjg7e-jn3.ln1@gate.homenet> Xref: csiph.com de.comp.lang.python:4911 Hermann Riemann schrieb am 16.09.2017 um 16:19: > Wenn bei einer Liste ein Element angehängt wird werden vermutlich > nur eine 4 oder 8 byte lange Adresse in ein Feld angehängt. > Bei jedem Buchstabe je nach utf-darstellung 2 oder 4 byte. > ( Bei diakritischen Zeichen entsprechend mehr) In Py2 gab es die 2-byte Unicode-Option, die wirklich UTF-16 verwendet hat (war vor allem unter Windows verbreitet), aber in Py3 ist die interne Darstellung nicht UTF-kodiert, sondern es wird zwischen ASCII, ISO8859-1, BMP und Astral unterschieden. In einzelnen Sonderfällen gibt es auch da noch eine UTF-16 Darstellung, aber die wird praktisch (außerhalb der Windows-Welt) nicht mehr verwendet. Kannst sie als Implementierungsdetail ansehen. > Wenn bei Speicherplatz eines Feldes nicht bei jeden neuen > Element ein neues Feld angelegt wird, > sondern bei Erweiterungen hinten vielleicht 20% Platz > für Erweiterungen reserviert werden, > dürfte es einiges schneller gehen. Ist bei Listen so, genau aus dem Grund. Wenn einmal was angehängt wird, war mit mit sehr hoher Wahrscheinlichkeit nicht das letzte Mal. > In Python2 war jeder Buchstabe 1 byte; Blödsinn. > utf- Sonderzeichen wie ö Zeichen waren halt mehrere Buchstaben. Blödsinn. > ( Diakritische Zeichen sind auch in Python3 "mehr als ein Buchstabe" >   was z.B. bei Indizierung, Zerlegung etc. >   unerwartete Effekte haben kann.) Richtig. Da hilft in den meisten Fällen eine Zeichennormalisierung. Oft genug ist es aber auch einfach egal, weil Text überraschend oft gar nicht zeichenweise verarbeitet wird. > Hermann >    der nicht sagen kann, ob für strings mit gleichem Inhalt >    jedes mal neuer Speicherplatz angelegt wird, >    oder eine hash Suche losläuft. Code lesen hilft. Stefan