3、list改变指针还是改变值

list1改变指针还是改变值

1、python中相同数据类型的list和string可以直接用“+”相连

“+”只是扩展了list长度,并不是每个元素相加。

lst1 = ['a','c']
lst2 = ['d','g']
lst = lst1 + lst2

s1 = "adc"
s2 = "agf"
s3 = s1 + s2

反转列表

Def rev(lst):
    lt = [] 
    for i in lst:
        lt = [i] + lt
    return lt

与java对比

1、java不能list不能直接用“+”相连,java要通过对象的方法来实现 如:

String a[] = { "A", "E", "I" };
String b[] = { "O", "U" };
List list = new ArrayList(Arrays.asList(a));
list.addAll(Arrays.asList(b));
Object[] c = list.toArray();
System.out.println(Arrays.toString(c));

[A, E, I, O, U]

更多参考:
https://www.runoob.com/java/arrays_merge.html
https://www.cjavapy.com/article/290/

2、list的特性

注意索引(index)和切片(slice)的区别

lst = ['s','f','i']
ls1 = lst[0]
ls2 = lst[0:1]
type(lst1) --->str,进行索引操作
type(lst2) --->list,进行切片操作

虽然lst1和lst2值相同,但是数据类型不同

3、同时接受list和string数据类型的数据,交换第一个和第二个元素

def swap(ls):
  return ls[1:2]+ls[0:1]+ls[2:]

4、当传递数据类型为应用数据类型

myList = list("Isaac")

def swapL(xs) :
    return [xs[-1]]+xs[1:-1]+[xs[0]]

def swapLx(lst):
    lst = swapL(lst)

swapLx(myList)
myList

结果为: ['I', 's', 'a', 'a', 'c']

解释:

5、当只是改变参数的具体的值的时候

myList = list("Isaac")

def swapL(xs) :
    return [xs[-1]]+xs[1:-1]+[xs[0]]

def swapLx(lst):
    lst[:] = swapL(lst)

swapLx(myList)
myList

结果为:
['c', 's', 'a', 'a', 'I']

解释:

6、总结

  • list数据类型直接赋值是改变其指针,指向新的变量,原始存放的数据并不改变
  • list[:]数据直接赋值是改变其值,存放的值直接发生改变

7、更多小技巧

def swapx(lst):
    lst[-1],lst[0] = lst[0],lst[-1]

swapx(myList)
myList

结果:
['c', 's', 'a', 'a', 'I']

猜你喜欢

转载自www.cnblogs.com/Stephanie-boke/p/11711318.html