当前位置:   article > 正文

Pyhton精讲day06--元组/推导式/字符串_为什么元组推导式输出后是一串字符

为什么元组推导式输出后是一串字符

元组

元组的应⽤场景:
思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
答:列表?列表可以⼀次性存储多个数据,但是列表中的数据允许更改。
⼀个元组可以存储多个数据,元组内的数据是不能修改的。

定义元组

元组特点:定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。

# 元组
tuple1 = (111, 222, 333, 'hello', [1, 2, 3], (22, 33))
print(tuple1)
print(type(tuple1)) # <class 'tuple'>
# 元组不支持修改
# tuple1[0] = 666 TypeError: 'tuple' object does not support item assignment
# 只有一个元素的元组
# tuple2 = [666]
tuple2 = (666,)
print(type(tuple2)) # <class 'tuple'>
# 元组内的直接数据如果修改则⽴即报错 但是如果元组⾥⾯有列表,
# 修改列表⾥⾯的数据则是⽀持的
# tuple1[4] = 999TypeError: 'tuple' object does not support item assignment
tuple1[4][0] = 666
print(tuple1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

元组的常⻅操作

t1 = ('aa', 'bb', 'cc', 'dd', 'bb')
# 按下标查找数据
print(t1[0]) # 下标/索引访问
# index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。
print(t1.index('bb', 3)) # 4
# count():统计某个数据在当前元组出现的次数。
print(t1.count('bb')) # 4
# len():统计元组中数据的个数。
print(len(t1)) # 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

# 推导式: 简化 列表或者其他序列复杂操作的表达式
# 列表推导式:
# 格式: [表达式 for 临时变量 in 迭代对象 [if 条件]]
from random import randint
import random
random.seed(666)
li = []
for _ in range(10):
    li.append(randint(10, 100))
print(li)
print([100 for i in range(10)])
print([100 for _ in range(10)])
print([i for i in range(10)])
print([i**2 for i in range(10)])
print([str(i) for i in range(10)])
ls = [randint(10, 100) for _ in range(10)]
print(ls)
# 将 li ls中的及格成绩筛选出来
# 1
new_scores = []
for score in li:
    if score >= 60:
        new_scores.append(score)
print(new_scores)
print([score for score in ls if score >= 60])
#  元组推导式:
# 格式: (表达式 for 临时变量 in 迭代对象 [if 条件])
t1 = tuple(ls)
print(type(t1))
print((i for i in t1)) # 返回的是generator
print(tuple((i for i in t1 if i>50)))
print(list(tuple((i for i in t1 if i>50))))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

在这里插入图片描述

再谈字符串

下标访问

name = "abcdef"
print(name[1])
print(name[0])
print(name[2])
  • 1
  • 2
  • 3
  • 4

切片(slice)

切⽚是指对操作的对象截取其中⼀部分的操作。字符串、列表、元组都⽀持切⽚操作。

  • 语法
序列[开始位置下标:结束位置下标:步⻓]
  • 1
  1. 不包含结束位置下标对应的数据, 正负整数均可;
  2. 步⻓是选取间隔,正负整数均可,默认步⻓为1。 正数是从左到右, 负数反之
import string
from random import choice
upper_letter = string.ascii_uppercase
lower_letter = string.ascii_lowercase
print(upper_letter)
print(lower_letter)
# len
print(len(upper_letter))
print(len(lower_letter))
# 序列[开始位置下标:结束位置下标:步⻓]
# ABCDEF
print(upper_letter[0:6])
print(upper_letter[:6])
print(upper_letter[23:26])
print(upper_letter[23:])
# 每个值有两个索引, 第二个索引从最右侧开始, 从-1开始计
print(upper_letter[-1])
print(upper_letter[-3:])
print(upper_letter[::2])
print(upper_letter[::])
print(upper_letter[::-1])

# 综合操作
print([x for x in string.ascii_uppercase[:6]])
print([f"Student{x}" for x in string.ascii_uppercase[:6]])
# choice() 随机选取
print([choice(string.ascii_uppercase[:20]) for _ in range(10)])
print([f"Employ{choice(string.ascii_uppercase[:20])}" for _ in range(10)])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在这里插入图片描述

回文数

https://leetcode-cn.com/problems/palindrome-number/solution/
在这里插入图片描述

def isPalindrome(x):
    """
    :type x: int
    :rtype: bool
    """
    if x < 0:
        return False
    return int(str(x)[::-1]) == x
    #      "123" -- >"321" -- >321
if __name__ == '__main__':
    print(isPalindrome(121))  # True
    print(isPalindrome(123)) # False
    print(isPalindrome(-123))# False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/672647
推荐阅读
相关标签
  

闽ICP备14008679号