¿Qué significa cadena (qué significa cadena en lenguaje C)?
¿Sabes realmente qué es una cadena de Python?
En el tweet "Explicación detallada de siete formas de empalmar cadenas en Python", mencioné que las cadenas de caracteres son algo que los programadores pueden hacer. No prescindir. Más tarde, vi una versión en inglés: Hay una garantía en la vida: muerte, impuestos y programadores que necesitan lidiar con cadenas. En realidad, yuxtapone el manejo de las cadenas por parte de los programadores con la muerte, lo que muestra cuán destinado está... Mirando hacia atrás. En otros artículos, descubrí que esta afirmación es compatible, porque sin darme cuenta mencioné muchos aspectos de las cadenas por partes, como: archivos de lectura y escritura de cadenas, impresión de cadenas, inmutabilidad de cadenas y mecanismo interno de cadenas, empalme de cadenas, si las cadenas serán. cancelado, etcétera. Y esto es sólo la punta del iceberg de hilos. En este caso, escribamos cadenas de Python por separado. El contenido de este artículo puede ser muy básico. No es una "operación llamativa" ni un "conocimiento frío". Es sólo una nota para revisar el pasado y buscar nuevos conocimientos. 1¿Qué es una cadena de Python? Según la definición de Wikipedia: una cadena es una secuencia finita de cero o más caracteres. En Python3, tiene un significado más claro: una cadena es una secuencia inmutable compuesta de puntos de código Unicode. Una cadena es una secuencia, lo que significa que tiene operaciones admitidas por tipos de secuencia: # Los siguientes syt son todos Representa una secuencia. x representa un elemento xins#Si s contiene el elemento i-ésimo s#s corta del elemento i-ésimo al elemento j-1. s#s corta del elemento i-ésimo al elemento j-1, con un intervalo de klen#s longitud min#s elemento mínimo max#s máximo El número total de veces que x aparece en la posición de índice s.count#s del elemento s.index#x
Las secuencias de cadenas también tienen algunas características únicas operaciones, que no se enumeran aquí debido a limitaciones de espacio. Como vista previa, se presentará el próximo artículo "¿Realmente sabes cómo usar las cadenas de Python?", Así que estad atentos... Una secuencia de cadenas es una secuencia inmutable, lo que significa que no se puede usar como secuencias mutables. se puede modificar en el lugar. Por ejemplo, empalmar "Cat" sobre la base de la cadena "Python" da como resultado la cadena "PythonCat". La nueva cadena es una existencia independiente y no tiene relación con la cadena básica "Python". basename=Pythonmyname=basename Catid==idFalse#A modo de comparación, la lista se puede modificar en su lugar baselist=baselist.appendprint
La diferencia entre esta secuencia de cadenas y otras secuencias es que su "elemento" es limitado solo pueden ser puntos de código Unicode. ¿Qué es un punto de código Unicode? Para entenderlo simplemente, es un carácter codificado en Unicode. ¿Qué son los caracteres? Son varios símbolos del sistema de escritura humano, como números arábigos, letras latinas, chinos, japoneses, tibetanos, signos de puntuación, símbolos de control y otros símbolos especiales. Entonces, ¿qué es la codificación Unicode? El alias de Unicode es Código Universal y Código Internacional. Es el estándar más utilizado para codificar caracteres escritos en números de computadora. Como todos sabemos, en el mundo del hardware informático en el nivel más bajo, solo hay 0 y 1.
Entonces, ¿cómo utilizar este número binario para representar caracteres culturales humanos? La cantidad de estos caracteres es enorme y todavía están creciendo y cambiando. ¿Qué tipo de esquema de codificación es el más confiable? Históricamente, los humanos han creado varias codificaciones de caracteres. estándares, como la codificación ASCII, que utiliza principalmente caracteres de idiomas de Europa occidental. Su desventaja es que solo puede codificar 128 caracteres; por ejemplo, GB2312, que es un estándar de codificación introducido por China, es compatible con el estándar ASCII. , ruso y otros caracteres también se han agregado, pero la desventaja sigue siendo que el rango de codificación es limitado y no puede representar caracteres del chino antiguo, chino tradicional y otros sistemas de escritura. El estándar de codificación Unicode se lanzó en 1991 y se actualizó hasta la undécima edición. Puede codificar 130.000 caracteres en 146 sistemas de escritura. Se puede decir que lo abarca todo y es verdaderamente digno de ser un "código internacional". La codificación Unicode es en realidad un conjunto de caracteres binarios, que establece una relación de mapeo desde caracteres escritos hasta caracteres numéricos únicos. Sin embargo, debido a las diferencias en la comprensión de los caracteres por parte de varias plataformas del sistema y por razones de ahorro de espacio, la codificación Unicode aún debe ser. Una vez convertido, el nuevo número binario convertido se puede utilizar como codificación para el almacenamiento real y la transmisión de red. Este método de conversión se denomina formato de conversión Unicode, que se subdivide en UTF-8, UTF-16, UTF-32, etc. El que utilizamos más habitualmente es UTF-8. ¿Por qué UTF-8 es el más utilizado? Porque es un esquema de codificación de longitud variable que utiliza diferentes números de bytes para codificar diferentes caracteres. Por ejemplo, cuando se codifican letras en inglés, solo se necesita un byte, mientras que cuando se codifican caracteres chinos más complejos. caracteres, se utilizarán tres bytes.
Se puede decir que la máquina lee la cadena de codificación binaria. Por conveniencia, generalmente la convertimos a hexadecimal. Por ejemplo, la codificación Unicode de la palabra "中" se puede expresar como 0x4e2d. su codificación UTF-8 se puede representar como 0xe4b8ad, 0x se usa al principio para representar hexadecimal, que es mucho más simple. Sin embargo, el resultado de la codificación UTF-8 se expresará en bytes. Por ejemplo, la forma de byte de la palabra "中" codificada en UTF-8 es xe4xb8xad. Para distinguir la codificación Unicode del código de bytes en Python, se agregan "u" y "b" al principio para mostrar la distinción. En Python3, debido a que Unicode se ha convertido en el formato de codificación predeterminado, se omite la "u". #Conversión de caracteres a codificación Unicode#En Python3, se omite la u al principio, no se puede omitir b hex)0x4e2dhex)0x41#Conversión de caracteres a codificación UTF-8.encodebxe4xb8xadA.encodebA#La codificación Unicode se restaura a chrA en el carácter chr# Restauración de codificación UTF-8 bA.decodeA en el carácter bxe4xb8xad.decode
Para resumir, una cadena en Python3 es una secuencia inmutable compuesta de puntos de código Unicode, es decir, una secuencia inmutable compuesta de caracteres codificados usando Unicode. secuencia estándar. La codificación Unicode asigna los caracteres del sistema de escritura a números binarios de computadora. Por conveniencia, generalmente se muestran como hexadecimales. En la memoria de la computadora, los caracteres se presentan en codificación Unicode. Cuando se escriben en el disco o se usan para la transmisión de red, generalmente se usa UTF. -Codificación de 8 vías. En Python2, debido al bagaje histórico, es decir, Python nació antes de la codificación Unicode, por lo que su problema de codificación es un gran problema. Afortunadamente, abandonar Python2 se ha convertido en una tendencia general, por lo que ya no lo presentaré ni lo compararé. 2Python Strings VS Java Strings Aunque no menciono las diferencias entre las versiones verticales, me gustaría hacer una comparación horizontal entre las cadenas de Python y otros lenguajes de programación. Creo que esto sería divertido. A través de la comparación entre idiomas, podemos profundizar nuestra comprensión de una cosa y también podemos inspirarnos para comprender el "lenguaje de programación" y la "filosofía de programación". Debido a mi conocimiento limitado, este artículo solo explicará dos puntos de las características del pelaje. Los lectores pueden corregirlos y complementarlos.
Cómo definir cadenas Las cadenas de Python son tipos integrados, por lo que son muy convenientes de usar. Hay tres métodos de definición: str_0=Las cadenas de Python se pueden escribir entre pares de comillas triples para representar cadenas de varias líneas. También se puede escribir entre comillas simples y, por supuesto, también se puede escribir entre comillas dobles. str_1=Python cat es un gato str_2=Python cat es una cuenta oficial de WeChat
La cadena de Java no es un tipo integrado. Pertenece a un objeto y debe crearse a través de la clase String. Sin embargo, debido a que las cadenas se usan con tanta frecuencia, Java predefine específicamente una clase de cadena String para que los programadores puedan definirla así: Stringname=Python cat en lugar de escribir: Stringname=newString;. Las cadenas de Java solo se pueden escribir entre comillas dobles y no tienen la flexibilidad de mezclar comillas simples y dobles en Python. En cuanto a la representación de cadenas de varias líneas entre comillas triples, los programadores de Java expresaron su envidia hasta la muerte. Las personas que han sido torturadas conocen mejor el dolor. Escríbalo para hacer felices a los programadores de Python: Strings = Las cadenas de varias líneas de Java son muy problemáticas. n requiere un carácter de nueva línea y n también debe unirse con un signo más;
¿Por qué Java? no admite cadenas de varias líneas? ¿Cuándo se admitirán cadenas de varias líneas? Este tipo de pregunta puede resultar confusa para los programadores de Python, pero definitivamente puede clasificarse a la vanguardia de "las características que los programadores de Java más esperan implementar". Finalmente, hay planes oficiales para implementarlo en Java11, pero el Java11 lanzado en septiembre de este año aún no está disponible. Ahora el plan se ha cambiado a Java12. Caracteres individuales y secuencias de caracteres De hecho, las comillas simples también se utilizan en Java y se utilizan en tipos de caracteres, como charc=A;. char es un tipo integrado que representa un único carácter codificado en Unicode. No hay ningún tipo char en Python, el tipo string se hace cargo de todo. Como se mencionó anteriormente, la cadena de Python es una secuencia de caracteres, pero la cadena de Java no es una secuencia. Si desea expresar conceptos similares, debe usar una matriz de caracteres o una matriz de cadenas, por ejemplo: chara={a, b,. c}; Stringstr=newString{1, 2, 3};
Las matrices de caracteres y las matrices de cadenas son secuencias, pero no cadenas. Si desea convertirlas entre sí, es bastante problemático. Además, se dice que es una secuencia, pero las operaciones de secuencia de Java son absolutamente incomparables con Python, al menos, solo las operaciones básicas mencionadas anteriormente, ¿se pueden implementar en Java y cuánto esfuerzo se necesita para implementarlas? Finalmente, hablemos de Ending, eso es todo sobre "¿Qué es exactamente una cadena de Python?" Espero que te resulte útil. La próxima vez les hablaré sobre "Cómo usar cadenas de Python", así que estad atentos. Este artículo es original y se publicó por primera vez en la cuenta pública de WeChat Python Cat. Responda "Love Learning" en segundo plano y obtenga 20 libros electrónicos seleccionados de forma gratuita. Lectura ampliada: wiki/Unicodewiki/UTF-8AvWg1EDxxx/python_352/library/stdtypes.htmlacmerfight/insight_python/blob/master/Unicode_and_Character_Sets.md