【问题标题】:Is there any difference between string and array of one-digit strings in Python?Python中的字符串和一位数字符串数组之间有什么区别吗?
【发布时间】:2021-06-10 21:10:45
【问题描述】:

引用 w3schools,

与许多其他流行的编程语言一样,Python 中的字符串是表示 unicode 字符的字节数组。

'abc'['a', 'b', 'c'] 有什么区别吗?有没有办法在不使用type() 的情况下区分第一个和第二个示例?

【问题讨论】:

  • 许多不同的访问器方法....isinstance(x,str) 是另一种(但也许就像类型...)...我不太明白你的问题它们之间肯定有相似之处,但它们是真正根本不同的对象
  • 有什么不同吗?是的,一个是字符串,一个是列表。如果你只是print他们,他们看起来就完全不一样了。在某些情况下,您实际上很难区分它们吗?
  • 这是一个字符串列表,而不是字节数组...
  • w3schools 是出了名的糟糕 - 不要使用它。

标签: python arrays string types


【解决方案1】:

请注意,您引用的内容是“字节数组”。 ['a', 'b', 'c'] 是一个列表,而不是一个数组。他们谈论的是内存中数组的内部表示,而不是它在语言中的使用方式。

许多操作在字符串和列表上的工作方式不同。特别是,搜索操作在字符串中查找子字符串,但只是在列表中查找单个元素。

s = 'abc'
l = ['a', 'b', 'c']
print('ab' in s) # prints True
print('ab' in l) # prints False

还有许多操作只适用于一种或另一种类型。例如,正则表达式匹配将适用于字符串,而不是列表。字符串是不可变的,所以像append()pop() 这样的修改操作只适用于列表。

【讨论】:

    【解决方案2】:

    Python 中的字符串不是“字节数组”。 它们是一流的对象 - 是的,底层对象确实 有一个缓冲区,其中代表 unicode 的字节 字符被存储 - 但这是不透明的。

    现在,字符串是单字符字符串的序列 (不是字节,不是其他类型)。因此,大多数也接受的代码 或期望一个字符的字符串序列可以使用 任意大小的字符串,以及任何其他此类序列, 例如您的示例中的单字符字符串列表。

    除此之外,字符串与 “字符串列表”。可能是最常用的可视化方式 字符串是一个简单的“打印”,一个字符串的打印和 这样的列表会有很大的不同。

    然后,如果您需要找到代码中的差异,请使用 输入,或调用isinstance(myvar, str) 就足够了。

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      相关资源
      最近更新 更多