Python--列表、元组

stus = ['xiaohei', 'xiaobai', 'xiaohuang']
# 0 1 2,下标从0开始
# 下标 角标 索引
print(stus[1])
print(stus[2])
print(stus[-1]) # 最后一个元素下标为-1

# 增加元素
stus.append('xiaohong') # 在list末尾增加一个元素
stus.append('xiaolan')
print(stus)

stus.insert(0, 'panda') # 在指定位置添加元素
stus.insert(100, 'panda') # 如果指定的下标不存在,则添加到末尾
print(stus)

list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1.extend(list2))

# 修改元素
stus[0] = 'new_panda'
print(stus)

# 查看
print(stus)
print(stus[1])
print(stus[-2])
print(stus.count('xiaohei')) # 查看某个元素在list中的个数
print(stus.count('gougou')) # 元素在list中不存在返回0

print(stus.index('xiaohei')) # 找小黑这个元素的下标,如果有多个,返回第一个
# print(stus.index('666')) # 如果元素不存在,会报错
# 删除元素
stus.pop() # 默认删除最后一个元素,如果指定下标,删除指定的元素,下标不存在会报错
print(stus.pop()) # pop有返回值
print(stus)
stus.pop(1)
print(stus)

stus.remove('new_panda') # 删除list中的一个元素,如果列表中有两个此元素,会删除第一个元素
print(stus.remove('xiaohong'))
# remove无返回值
print(stus)

del stus[0]
print(stus)

stus.clear() # 清空整个list
print(stus)
# 列表反转及排序
lists = ['xiaohei', 'xiaohuang', 'xiaobai']
lists.reverse() # 反转list
print(lists)

numbers = [1, 3, 2, 9, 0]
numbers.sort() # 默认排序为升序
print(numbers)
numbers.sort(reverse=True) # 降序
print(numbers)
# 多维数组
# 二维数组 三维数组等
all_nums = [1, 2, [7, 8, 9]]
print(all_nums[2][0])
all_nums1 = [1, 2, [7, 8, 9, ['aaa']]]

# 列表可以用+号拼接
stu1 = [1, 2]
stu2 = [3, 4]
print(stu1 + stu2)
print(stu1 * 8)

# 列表循环及切片
names = ['haha', 'hehe', 'heihei']
# 如果直接循环一个list,那么每次循环都是list里面的元素
for name in names:
print(name)

# 切片,list取值的一种方式
new_names = names[0:1]
print(new_names) # 切片顾头不顾尾

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[3:6])
print(nums[:6]) # 切片前面一个值不写,从开头取值
print(nums[3:]) # 切片最后一个值不写,取到结尾
print(nums[:]) # 如果前面的值和后面的都不写,全取过来

print(nums[:6:1])
print(nums[:6:2]) # 步长
print(nums[::2])

print(nums[::-1]) # 步长为正数从左往右取值,步长是负数,从右往左取值
print(nums[7:0:-1])

# 切片同样适用于字符串,字符串也有下标
title = '今天圣诞节'
print(title[0])
print(title[:4])
print(title[::-1])

for t in title:
print(t)

for index, value in enumerate(title): # enumerate内置函数,同时取下标和值
print('%s: %s' % (index, value))

# 非空即真
# 非0即真
abc = ''
if abc:
print('真')
else:
print('假')

num = 1
if num:
print('真')
else:
print('假')

a = (1,)
print(type(a))
# 元组是不可变的列表
b = (1, 2, 3, 4, 5, 5)
print(b[0])
print(b[:4])

# b[-1] = 18 值不可改变

print(b.count(5)) # 找个数
print(b.index(1)) # 返回下标

li = [1, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 在循环list时,不能删东西,会导致下标变化
for i in li:
if i % 2 != 0:
li.remove(i)
print(li)

li2 = li[:] # 深拷贝
for i in li2:
if i % 2 != 0:
li.remove(i)
print(li)

li3 = li # 浅拷贝
print(id(li))
print(id(li2))
print(id(li3))
posted @ 2017-12-25 12:13  王思磊  阅读(241)  评论(0编辑  收藏  举报