元组可以被看成是不能改变的列表。列表是动态的,你可以增添,插入,删除,更改列表元素。有时我们需要这样的操作,但是有些时候我们需要保证有些数据是不能被用户或程序更改的。这就是元组的作用。

准确的说,列表是可变对象,元组是不可变对象。

定义和访问元组

元组的定义和列表相似,只是列表是用方括号定义,元组是用圆括号定义的。一旦定义好元组,可以像访问列表那样访问元组元素,并且可以使用 for 循环。

colors  =  ('red',  'green',  'blue')
print("The first color is: " + colors[0]) print("\nThe available colors are:")
for color in colors:
print("- " + color)

如果尝试向元组中添加元素,会得到一个错误。

colors = ('red', 'green', 'blue')
colors.append('purple')

同样的,其他操作也会导致错误。一旦定义好一个元组,它就不会被改变。

元组生成字符串

我们知道混合英文字符和存储字符串的变量是相当有用的,如下所示:

animal = 'dog'
print("I have a " + animal + ".")

当我们想要生成一系列的语句的时候,这种方式是不错的生成方式。如下所示:

animals = ['dog', 'cat', 'bear']
for animal in animals:
print("I have a " + animal + ".") 

我们用加号来实现,这种方法是符合直觉的,但不够简洁。使用占位符就能使代码更简洁。

Python 通常会忽略掉我们放进字符串的字符,但是它会对少许字符格外注意。例如 "\t" 和 "\n"。Python 同样也会注意到 "%s" 和 "%d"。它们被称为占位符。当 Python 看到了 "%s" 占位符,它就会找到 % 后的第一个参数填充进占位符。如下所示:

animal = 'dog'
print("I have a %s." % animal) 

这是一种相当简洁的方法来生成包含变量的字符串。我们将句子写进一条字符串中,然后告诉 Python 我们需要什么值嵌入到字符串的指定位置中。

这种方法被称为格式化字符串(string formatting)。如果你有不止一个数据要填充进字符串中,你需要将参数放进元组中。如下所示:

animals = ['dog', 'cat', 'bear']
print("I have a %s, a %s, and a %s." % (animals[0], animals[1], animals[2]))

包含数字的格式化字符串

如果你想打印一个包含数字的字符串,如下所示:

number = 23
print("My favorite number is " + number)

上述代码会报错。Python 不知道你指的是值为23还是作为字符串的“23”。如果你想让 Python 以字符串的形式对待这个变量,我们需要用到 str() 函数将数字转为字符串。如下所示:

number = 23
print("My favorite number is " + str(number) + ".")

如果要用格式化的字符串,"%d" 会帮助到我们。如下所示:

number = 23
print("My favorite number is %d." % number) 

同理,想嵌入多个数字,只需要将参数放进元组里。如下所示:

numbers = [7, 23, 42]
print("My favorite numbers are %d, %d, and %d." % (numbers[0], numbers[1], numbers[2]))

也可以混合使用字 符串和数字占位符。不再赘述。在 Python 3 中还有很多复杂的方法做字符串格式化。

本文转载于https://www.py.cn/jishu/jichu/10536.html

最新文章

  1. Hibernate 基础配置及常用功能(一)
  2. JS获取各种浏览器窗口大小的方法
  3. csuoj 1390: Planting Trees
  4. Python字符界面函数库
  5. Chrome浏览器的密码隐患
  6. Sublime Text 3 入门(插件控制台安装)
  7. bestcoder单调区间
  8. Python 安装、循环语句、数据类型(一)
  9. 对MySQL数据量日益增长产生的一点小想法
  10. 迈向angularjs2系列(1):typescript指南
  11. C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
  12. Java进阶篇(六)——Swing程序设计(上)
  13. Python和C++的混合编程(使用Boost编写Python的扩展包)
  14. Build.gradle的详细配置说明
  15. Python学习第2章
  16. node.js初识12
  17. 从flask视角理解angular(三)ORM VS Service
  18. php字段转义
  19. CHECKEDLISTBOX用法总结
  20. vue 组件间的通信

热门文章

  1. javascript面向对象 用new创建一个基于原型的javascript对象
  2. 最小n个和(优先队列)
  3. OUC_TeamTraining_#1 720
  4. Python 调用JS文件中的函数
  5. CodeIgniter启用缓存和清除缓存的方法
  6. WPF global exception handler
  7. Android7.0 API变更
  8. Go语言fmt.Printf使用指南(占位符总结)
  9. leetcode218 天际线问题
  10. Nginx URL重写(rewrite)配置及信息详解