Python基础 - 05元祖集合字典

Python基础 - 05元祖集合字典

三、元祖

3.1 定义元祖

tup = ()
print(type(tup))    # <class 'tuple'>
tup1 = ('aa')     
print(type(tup1))  # <class 'str'>
tup2 = ('aa',)      
print(type(tup2))  # <class 'tuple'>  只有一个元素时,加上逗号表示元祖,否则为字符串
tup3 = ('aa','bb')
print(type(tup3))  # <class 'tuple'>

  

aTuple = ('1', 'hello', 'AAA')
print(aTuple)  # ('1', 'hello', 'AAA')
print(aTuple[2])  # AAA
print(aTuple[:2])  # ('1', 'hello')
print(aTuple[::-1])  # ('AAA', 'hello', '1')

 

print(aTuple.count('1'))                # 1
print(aTuple.index('hello', 1))         # 1
print(aTuple.index('hello'))            # 1
aTuple = ('1', 'hello','AAA', 'hello')
print(aTuple.index('hello', 2))         # 3,从下标2开始
print(aTuple.index('hello'))            # 1,返回第一个遇到的元素位置

t3 = ('A', 'a', 'b', 'c', 'd', 'e', 'd')
index = t3.index('d', 1, 7)
print(index)                            # 4

  

print(len(t3))                          # 7
if 'c' in t3:
    print('存在')
else:
    print('不存在')

for i in t3:
    print(i)

  

# 元祖转列表
print(list(t3))           # ['A', 'a', 'b', 'c', 'd', 'e', 'd']

list3 = ['1', '2', '3']
print(tuple(list3))       # ('1', '2', '3')

  

from collections import namedtuple

# 命名元祖
NetworkAddress = namedtuple('NetworkAddress',['hostname','port'])
a = NetworkAddress('www.python.org', 80)
print(a.hostname)
print(a.port)
print(type(a))                    # <class '__main__.NetworkAddress'>
print(len(a))                     # 2
print(isinstance(a, tuple))       # True

  

四、集合

4.1 集合定义: 无序不可重复

set1 = {'AAA','AAA'}
print(type(set1))              # <class 'set'>
print(set1)                    # {'AAA'}

list2 = [1,3,6,5,3,2,4,6,8,6,7,9]
set2 = set(list2)
print(set2)                    # {1, 2, 3, 4, 5, 6, 7, 8, 9}

set3 = {}
print(type(set3))              # <class 'dict'>
set4 = set()
print(type(set4))              # <class 'set'>
print(len(set4))               # 0

4.2 集合的增删改查  

set4.add('西游记')
print(set4)              # {'西游记'}
set4.update(set1)
print(set4)              # {'西游记', 'AAA'}

set5 = {'AA','CC','DD','FF'}
set5.remove('AA')
print(set5)              # {'CC', 'DD', 'FF'}
# KeyError: 'AA'
# set5.remove('AA')

del set1
# NameError: name 'set1' is not defined
# print(set1)

set4.clear()
print(set4) # set()

# 随机移除
set5.pop()
print(set5) # {'CC', 'DD'}

4.3 集合的交集、差集、并集

set2 = {1, 2, 3, 4, 5}
set3 = {1, 2, 6, 7, 8, 9}
result = set2.intersection(set3)          # 交集
print(result)                             # {1, 2}
result = set2.union(set3)                 # 并集
print(result)                             # {1, 2, 3, 4, 5, 6, 7, 8, 9}
result = set2.difference(set3)            # 差集
print(result)                             # {3, 4, 5}

print(set2 & set3)                        # {1, 2}
print(set2 | set3)                        # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set2 - set3)                        # {3, 4, 5}

 

五、字典

5.1 定义、增删改查

dict1 = {}
print(type(dict1))  # <class 'dict'>
dict1['name'] = '王路飞'
print(dict1)  # {'name': '王路飞'}
dict1['age'] = 30
dict1['sex'] = '男'
print(dict1)  # {'name': '王路飞', 'age': 30, 'sex': '男'}

# 修改
dict1['age'] = 33
print(dict1)  # {'name': '王路飞', 'age': 33, 'sex': '男'}

dict1['score'] = 90
print(dict1)  # {'name': '王路飞', 'age': 33, 'sex': '男', 'score': 90}
dict1['score'] += 5
print(dict1)  # {'name': '王路飞', 'age': 33, 'sex': '男', 'score': 95}
# pop(key): 根据key实现删除,删除的是键值对,返回值是key对应的value book = {'name': '《西游记》', 'author': '吴承恩', 'price': 22.38, 'publish': '中信出版社'} r = book.pop('price') print(r) # 22.38 print(book) # {'name': '《西游记》', 'author': '吴承恩', 'publish': '中信出版社'} pub = book.popitem() print(pub) # ('publish', '中信出版社') 最后一个键值对 print(book) # {'name': '《西游记》', 'author': '吴承恩'} del book['author'] # 类似于pop(key) print(book) # {'name': '《西游记》'}

5.2 字典操作

keys() / values() / items() / get() / pop() / popitem() / clear() / copy() / fromkeys(s,t)

value = book.get('name')
print(value)        # 《西游记》
print(len(book))    # 4
value1 = book.get('key1', 'ABC')
print(value1)       # None, 没有可以默认返回None;  ABC, 指定当key 不存在时的返回值ABC

  

for i in book:
    print(i)                # name author price publish

print(book.values()) # dict_values(['《西游记》','吴承恩',22.38,'中信出版社']) print(list(book.values())) # ['《西游记》', '吴承恩', 22.38, '中信出版社'] print(book.items()) # dict_items([('name', '《西游记》'), ('author', '吴承恩'), ('price', 22.38), ('publish', '中信出版社')] for i in book.items(): print(i) # ('name', '《西游记》') ('author', '吴承恩') ...... for k, v in book.items(): print(k, v) # name 《西游记》 author 吴承恩 ...... book.setdefault('price', 100) print(book) # {'name': '《西游记》', 'author': '吴承恩', 'price': 22.38, 'publish': '中信出版社'} book.setdefault('page', 780) print(book) # {'name': '《西游记》', 'author': '吴承恩', 'price': 22.38, 'publish': '中信出版社', 'page': 780}

 

dict1 = {'a': 10, 'b': 20}
book.update(dict1)
print(book)  # {'name': '《西游记》', 'author': '吴承恩', 'price': 22.38, 'publish': '中信出版社', 'page': 780, 'a': 10, 'b': 20}
print(dict1)

# TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
# print(book + dict1)

 

result = book.fromkeys(dict1)
print(result)                                   # {'a': None, 'b': None}
result = book.fromkeys(['c', 'd'], [1, 20])
print(result)                                   # {'c': [1, 20], 'd': [1, 20]}
result = book.fromkeys(['name', 'ss'], [20, 90])
print(result)                                   # {'name': [20, 90], 'ss': [20, 90]}

 

del book['name']
print(book) # {'author': '吴承恩', 'price': 22.38, 'publish': '中信出版社', 'page': 780}
book.clear()
print(book) # {}

字典转列表、元祖

dict1 = {'name': '张三', 'age': 18}
result = list(dict1)
print(result)                  # ['name', 'age']
result = tuple(dict1)
print(result)                  # ('name', 'age')
list1 = [('a', 10), ('b', 20), ('c', 30)]
print(dict(list1))             # {'a': 10, 'b': 20, 'c': 30}
list1 = [('a', [1,2,3]), ('b', 20), ('c', 30)]
print(dict(list1))             # {'a': [1, 2, 3], 'b': 20, 'c': 30}

 

六、通用方法

  • list: 允许重复,有序, 有下标  []
  • tuple: 允许重复,元素不能增加删除修改,只能查看 ()
  • dict: 键值对存在, 键:唯一, 值:允许重复 {}
  • set:   不允许重复,无序    {}

6.1 通用方法

运算符 Python表达式 结果 描述 支持的数据类型
+ [1,2]+[3,4] [1,2,3,4] 合并 字符串,列表,元祖
* ['He']*3 ['He','He','He'] 复制 字符串,列表,元祖
in 3 in (1,2,3) True 元素是否存在 字符串,列表,元祖,字典
not in 4 not in (1,2,3) True 元素是否不存在 字符串,列表,元祖,字典

 

list1 = [1,2,3,5,6,8,9,0]
result = max(list1)
print(result)         # 9
result = min(list1)
print(result)         # 0
result = sum(list1)
print(result)         # 34
result = abs(-1)
print(result)         # 1

t1 = (45,12,78,90,10,88)
result = sorted(t1)
print(result)          # [10, 12, 45, 78, 88, 90]
result = sorted(t1, reverse=True)
print(result)          # [90, 88, 78, 45, 12, 10]

result = chr(67)
print(result)          # C
result = ord('A')
print(result)          # 65

 

6.2 带下标的遍历

enumerate()类用于将一个可遍历的数据对象(如列表、元祖或字符串)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环中。

chars = ['a', 'b', 'c', 'd']
for i, char in enumerate(chars):
    print("%d, %s" %(i, char))

# 0, a
# 1, b
# 2, c
# 3, d

 

6.3 内置方法

print()、 input()、 type()、 id()、 len()、 bin()、 oct()、 hex()、 chr()、 ord()

 

七、列表推导式: 最终得到一个列表

list1 = []
for i in range(1, 10):
    list1.append(i)
print(list1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 格式1: list2 = [i for i in range(1, 10)] print(list2) # [1, 2, 3, 4, 5, 6, 7, 8, 9] list3 = [i for i in range(1, 10, 2)] print(list3) # [1, 3, 5, 7, 9] # 格式2: [i for i in 可迭代的 if 条件] list4 = ['62', 'hello', '100', 'world', 'luck', '88'] list5 = [word for word in list4 if word.isalpha()] print(list5) # ['hello', 'world', 'luck'] list6 = [word.title() if word.startswith('h') else word.upper() for word in list4] print(list6) # ['62', 'Hello', '100', 'WORLD', 'LUCK', '88'] a = [(x, y) for x in range(1, 3) for y in range(3)] print(a) # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] b = [(x, y, z) for x in range(1, 3) for y in range(3) for z in range(4, 6)] print(b) # [(1, 0, 4), (1, 0, 5), (1, 1, 4), (1, 1, 5), (1, 2, 4), (1, 2, 5), (2, 0, 4), (2, 0, 5), (2, 1, 4), (2, 1, 5), (2, 2, 4), (2, 2, 5)] aa = [x for x in range(1, 101)] bb = [aa[i:i + 3] for i in range(0, 101, 3)] print(bb) # [[1, 2, 3], [4, 5, 6],......, [97, 98, 99], [100]] li = [[i, i + 1, i + 2] if i <= 98 else [i for i in range(i, 101)] for i in range(1, 101, 3)] print(li)

  

  

 

上一篇:Pycharm开发Django项目增删改查操作


下一篇:点击datalist中Button按钮出现“回发或回调参数无效......”