python语法基础-List列表,集合

本文介绍了Python中的内置数据结构,重点讲解了List列表的创建、操作,包括访问、索引、切片等,并提及List与Tuple元组的异同。此外,还简单提到了Set集合的特点,强调其内容无序且不重复。
摘要由CSDN通过智能技术生成

内置数据结构(变量类型)

list
set
dict
tuple

  • list列表

一组有序数据做成的序列
数据就有先后顺序
数据可以不只是一类数据

list的创建
直接创建,用中括号创建,内容直接用英文逗号隔开
用list创建
列表包含单个字符串的时候是一个特例

l1 = [1,4,3,2,3]
# list 内的数据可以不是一个类型
l2 = [1,2,3,"huahua","sasa","绒绒"]
print(l1)         # [1, 4, 3, 2, 3]
print(l2)         # [1, 2, 3, 'huahua', 'sasa', '绒绒']

# 创建列表的第二种方式
l3 = list()
print(l3)         # []
print(type(l3))   # <class 'list'>

# list创建特例
# 想创建就按一个只包含一个字符串的列表
s = "huahua"
L1 = list(s)
print(type(L1))   # <class 'list'>
print(L1)         #	['h', 'u', 'a', 'h', 'u', 'a']
  • 列表的常见操作

访问
使用下标操作,也叫索引
列表的元素索引是从0开始

L1 = [13,14,23,43,233,666,4399]
print(L1[5])        # 666
print(L1[15])       # IndexError: list index out of range
# 使用下标访问
# 超标,是引起 IndexError 的原因

成员资格

# 成员资格运算
# 就是判断一个元素是否在list里面
a = [1,2,3,4,5,6]
b = 7
c = b in a
print(c)       # False
d = 6
print(d in a)  # True

切片操作
对列表进行任意一段的截取
截取之后,创建一个新的列表

L1 = [100,200,233,300,400,500,600,666,700,800,900]
print(L1[::1]) # 相当于print(L1[:])        # [100, 200, 233, 300, 400, 500, 600, 666, 700, 800, 900]
print(L1[::2])                             # [100, 233, 400, 600, 700, 900]
# 切片可以控制增长幅度,默认增长幅度为1


print(L1[::100])                           #[100]
# 下标可以超出范围,超出后不在考虑多余下标内容

print(L1[-2:-5])                           # []
print(L1[-2:-5:-1])                        # [800, 700, 666]
print(L1[-4:-1:1])
# 下标值,增长幅度可以为负数                # [666, 700, 800]
# 为负数,表示顺序是从右往左; 默认顺序是从左向右移动
# 规定:数组最后一个数字的下标为 -1

列表内涵:list content
通过简单方法创建列表

# for 创建
A = ['x', 'y', 'z']
# 用list创建应用 list b
# 下面代码的含义是,对于所有A中的元素,逐个放入新列表B中
B = [i for i in a]
print(B)                                      # ['x', 'y', 'z']

# 对于C中所有元素乘以10,生成一个新的list D
C = [1,2,3,4,5,6]
D = [i*10 for i in c]
print(D)                                      # [10, 20, 30, 40, 50, 60]
 
# 还可以过滤原来list中内容放入新列表
# 比如原有列表e,需要把所有c中的偶数生成新的列表F
E = [x for x in range(1,50)] # 生成一个1到49的列表
F = [m for m in e if m % 2 ==0 ]
print(F)                                                          

# 列表还可以嵌套
# 由两个列表G,H
G = [i for i in range(1,4)] # 生成list G
print(G)                                    # [1, 2, 3]                                 
H = [i  for i in range(100,1000) if i % 100 == 0 ]
print(H)                                    #  [100, 200, 300, 400, 500, 600, 700, 800, 900]
J = [ m+n for m in G \
     for n in H]
print(J)                                   # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]

# 还可以这样写
G = [i for i in range(1,4)]
print(K)
H = [i for i in range(100,1000) if i %100 == 0 ]
print(H)
for m in G:
    for n in H:
        print(m+n, end = " ")
print()
#### 输出结果
#[1, 2, 3]
#[100, 200, 300, 400, 500, 600, 700, 800, 900]
#[101, 201, 301, 401, 501, 601, 701, 801, 901, 102, 202, 302, 402, 502, 602, 702, 802, 902, 103, 203, 303, 403, 503, 603, 703, 803, 903]
#[1, 2, 3]
####

关于列表的函数

# append 插入一个内容,在末尾追加
a = [ i for i in range(1,5)]
print(a)                   # [1, 2, 3, 4]
a.append(666)
print(a)                   # [1, 2, 3, 4, 666]

# insert 制定位置插入
# insert(index, data)
a.insert(3,233)
print(a)                   # [1, 2, 3, 233, 4, 666]                 

# del 删除
# pop 从对位拿出一个元素,即把最后一个元素取出来
last_ele = a.pop()
print(last_ele)            #  666
print(a)                   #  [1, 2, 3, 233, 4]

# remove 在列表中删除指定的值的元素
# 如果在被删除的值没有在list里,则报错
# 即,删除list指定值的操作一个使用 try... exceoty语句, 或者先行判断
a.insert(4,666)
print(a)
print(id(a))
a.remove(666)
print(a)
print(id(a))
### 输出结果
#[1, 2, 3, 233, 666, 4]
#2431146031176
#[1, 2, 3, 233, 4]
#2431146031176
####
#输出两个id值是一样的,说明,remove操作是在原list直接操作

# clear 清空
print(a)                    # [1, 2, 3, 233, 4]
print(id(a))                #  2431145323016
a.clear()                   
print(a)                    # []                 
print(id(a))                #  2431145323016
# 如果不需要列表地址保持不变,则清空列表可以使用以下方式
# a = list()
# a = []

# reverse 翻转列表内容,原地翻转
b = [1,2,3,4,5,6]
print(b)                   #  [1, 2, 3, 4, 5, 6]
b.reverse()
print(b)                   # [6, 5, 4, 3, 2, 1]


# exend 扩展列表,两个列表,把一个直接拼接到后一个
c = [1,2,3,4]
d = [233, 666, 4399, 2144]             
print(c)                   # [1, 2, 3, 4, 233, 666, 4399, 2144]

# count 查找列表中指定值或元素的个数
e = [1,2,3,4,5,6,7,8,9]
print(e)                         # [1, 2, 3, 4, 5, 6, 7, 8, 9]           
e.append(6)           
e.insert(4, 6)             
print(e)                         #   [1, 2, 3, 4, 6, 5, 6, 7, 8, 9, 6]               
e_len = e.count(6) 
print(e_len)                     # 3

- tuple(元组)

可以理解成一个不允许更改的列表

# tuple的创建
# 1. 直接用小括号
ta = ()
print(type(ta))                                  # <class 'tuple'>
# 当用小括号创建一个元素的tuple的时候
tb = (666)
print(type(tb))                                  # <class 'int'>
tc = (666,)
print(type(tc))                                  # <class 'tuple'>
td = (666, 2333, 4399)
print(type(td))                                  # <class 'tuple'>


# 2.直接用逗号
ta = 666,
print(type(ta))                                  # <class 'tuple'>
tb = 666,2333,2019,43999
print(type(tb))                                  # <class 'tuple'>

# 3. 使用tuple的定义
ta = tuple()
print(type(ta))                                 # <class 'tuple'>
li = [1,3,5,,"花花"]
print(type(li))                                  # <class 'tuple'>

- tuple其余特征跟list基本一致

有序
可以访问不可以被修改
元素可以是任意类型

# tuple的索引操作
la = [ "i", "love", "huahua"]
print(la)                                         # ['i', 'love', 'huahua']
Ta = tuple(la)
print(Ta[2])                                      # huahua

# tuple的分片操作
print(Ta[:])                                      # ('i', 'love', 'huahua')
print(Ta[:2])                                     # ('i', 'love')
print(Ta[-1::-1])                                 #  ('huahua', 'love', 'i')

# tuple的相加
Ta = 233, 666, 4399,2019
Tb = (" i", "love", "money")
Tc = Ta + Tb
print(tc)                                         # (233, 666, 4399, 2019, ' i', 'love', 'money')

# tuple乘法
Tc = Ta * 2
print(Tc)                                         # (233, 666, 4399, 2019, 233, 666, 4399, 2019)

# tuple成员检测
if "money" in Tb:
    print("是的,是我最喜欢的")
else:
    print("打扰了,家贫")                          # 是的,是我最喜欢的

# 元组遍历
for i in Tb:
    print(i)                                       #  i
                                                   #  love
                                                   # money
            
            
#嵌套 tuple的访问
Td =((1,2,3,4),("i", "love", "huahua"), (8,7,6,5))
# 双层访问
for i in td:                                      # (8, 7, 6, 5)
    print(i)                                       # 8
    for j in i:                                   # 7
        print(j)                                   # 6
                                                   # 5
            
# 单层访问
for k in Td:
    print(k)     
                                                    # (1, 2, 3, 4)
                                                    #('i', 'love', 'huahua')
                                                    #(8, 7, 6, 5)   

# tuple的常用函数
Te =(123,121,231,324)
print(len(Te))   # 长度                             # 4                       
print(max(Te))   # 最大                             # 324
print(min(Te))   # 最小                             #121


# tuple的特殊用法
a = 100173761
b = 'sasa是个杀手'
print(a,b)                                         # 100173761 sasa是个杀手
a,b = b,a
print(a,b)                                         # sasa是个杀手 100173761
# 要求对a,b值进行互换
# 这种用法 python独有
  • 集合

跟数学中的集合的概念一致
内容无序 + 内容不重复

# 集合的定义
# 1 通过set关键字
sa = set()      
print(sa)                                                      # set()
li = [1,23,12,3423,54532,5323,12,4]
sb = set(li)                                                   # {1, 54532, 4, 5323, 12, 23, 3423}
print(sb)

# 2 使用大括号
sc = {"呆橘", "花花","须须","障障"}
print(sc)                                                       # {'呆橘', '花花', '障障', '须须'}

# in 操作
if "飒飒" in sc:
    print("2333")
else:
    print("不在这里啊")                                        
                                                              #   不在这里啊

# 利用 sc生成sd
sc ={1,2,34,55,74,4}
sd = {i for i in sc}
print(sd)                                                    #  {1, 2, 34, 4, 74, 55}
# 集合的内置函数
sa = {1,2,3,41,12,31,34,6,7,8}
print(len(sa))                                 # 10
print(sa.add(9))                               # None
print(sa)                                      # {1, 2, 3, 34, 6, 7, 8, 41, 9, 12, 31}
#len 长度
# add 向集合添加元素


# 删除操作
# remove 和 discard 的区别
sb = {1,2,3,4,5,6,7}
sb.remove(6)
print(sb)                                      # {1, 2, 3, 4, 5, 7}
sb.discard(6)
print(sb)                                      # {1, 2, 3, 4, 5, 7}
# 虽然输出结果相同,但remove删除的值如果不在集合中,会报错,而discard不会,看
sb.remove(8)
print(sb)                                      # KeyError: 8
sb.discard(8)
print(sb)                                        # {1, 2, 3, 4, 5, 7}
sb.pop()
print(sb)                                        # {2, 3, 4, 5, 7}
# pop弹出集合的一个内容
# 删除的内容是随机的


# 集合的数学操作
# intersection:交集
sc = {1,2,3,4,5,6,7,233,1234}
sd = {6,7,8,9,10}
print(sc.intersection(sd))                     #  {6, 7}
# difference: 差集
print(sc.difference(sd))                       #  {1, 2, 3, 4, 5, 233, 1234}
# 差集的另一种表达
print(sc - sd)
# union:交集
print(sc.union(sd))                            #  {1, 2, 3, 4, 5, 6, 7, 8, 233, 9, 10, 1234}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值