PYTHON语法学习

1、用PYTHON实现排列组合

笛卡尔积:itertools.product(*iterables[, repeat])

直接对自身进行笛卡尔积:

import itertools

for i in itertools.product('ABCD', repeat = 2):

print (''.join(i),end=' ')

输出结果:

AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD

print (‘’.join(i))这个语句可以让结果直接排列到一起

end=’’ 可以让默认的输出后换行变为一个空格

两个元组进行笛卡尔积:

import itertools

a = (1, 2, 3)

b = ('A', 'B', 'C')

c = itertools.product(a,b)

for i in c:

print(i,end=' ')

输出结果:

(1, ‘A’) (1, ‘B’) (1, ‘C’) (2, ‘A’) (2, ‘B’) (2, ‘C’) (3, ‘A’) (3, ‘B’) (3, ‘C’)

排列:itertools.permutations(iterable[, r])

import itertools

for i in itertools.permutations('ABCD', 2):

print (''.join(i),end=' ')

输出结果:

AB AC AD BA BC BD CA CB CD DA DB DC

组合:itertools.combinations(iterable, r)

import itertools

for i in itertools.combinations('ABCD', 3):

print (''.join(i))

输出结果:

ABC

ABD

ACD

BCD

组合(包含自身重复):itertools.combinations_with_replacement(iterable, r)

import itertools

for i in itertools.combinations_with_replacement('ABCD', 3):

print (''.join(i),end=' ')

输出结果:

AAA AAB AAC AAD ABB ABC ABD ACC ACD ADD BBB BBC BBD BCC BCD BDD CCC CCD CDD DDD

2、join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

str.join(sequence)              sequence -- 要连接的元素序列。

str.join(元组、列表、字典、字符串) 之后生成的只能是字符串。

所以很多地方很多时候生成了元组、列表、字典后,可以用 join() 来转化为字符串。

3、按逗号分隔列表

方法一:

def commaSpiltList(self, listData):

        listData = list(listData)

        strs = str(listData[0])

        for letter in range(1, len(listData) - 1):

            strs = strs + ',' + str(listData[letter])

        strs += ',' + str(listData[len(listData) - 1])

        print(strs)

方法二:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

L = [1,2,3,4,5]

s1 = ','.join(str(n) for n in L)

print s1

4、复制

—–深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。

—–而等于赋值,并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。

—–而浅复制要分两种情况进行讨论:

1)当浅复制的值是不可变对象(数值,字符串,元组)时和“等于赋值”的情况一样,对象的id值与浅复制原来的值相同。

2)当浅复制的值是可变对象(列表和元组)时会产生一个“不是那么独立的对象”存在。有两种情况:

第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。

第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表),如果不改变其中复杂子对象,浅复制的值改变并不会影响原来的值。 但是改变原来的值 中的复杂子对象的值  会影响浅复制的值。

对于简单的 object,例如不可变对象(数值,字符串,元组),用 shallow copy 和 deep copy 没区别

复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你好!关于Python基本语法学习,我可以为你提供一些指导。Python是一种高级编程语言,它具有简洁明了的语法,非常适合初学者入门。 首先,Python的注释使用井号(#)开头,可以在代码中添加注释来解释代码的功能和目的。 变量是存储数据的容器,你可以使用等号(=)来给变量赋值。例如: ```python name = 'John' age = 25 ``` Python中的基本数据类型包括整数(int)、浮点数(float)、布尔值(bool)、字符串(str)等。你可以直接使用这些数据类型来操作数据。 条件语句可以帮助你根据条件执行不同的代码块。例如,使用if语句来判断某个条件是否为真,并在条件满足时执行相应的代码块。例如: ```python if age >= 18: print("成年人") else: print("未成年人") ``` 循环语句可以帮助你重复执行一段代码。Python中有两种常用的循环:for循环和while循环。例如,使用for循环遍历一个列表: ```python fruits = ['apple', 'banana', 'orange'] for fruit in fruits: print(fruit) ``` 函数是一段完成特定任务的代码块,可以重复使用。你可以使用def关键字来定义函数,并使用return语句返回结果。例如: ```python def add_numbers(a, b): return a + b result = add_numbers(3, 5) print(result) # 输出:8 ``` 这只是Python基本语法的一小部分,如果你有具体的问题或需要更深入的学习,可以告诉我。我会尽力帮助你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归去来?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值